home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / tools / cdc / src / cdc.s < prev    next >
Text File  |  1997-05-28  |  108KB  |  5,241 lines

  1.     .include    tnb.mac
  2.     .include    iocscall.mac
  3.     .include    doscall.mac
  4.  
  5. _GETFCB        equ        $ff7c
  6.  
  7. HEAD1 = 'CDCT'
  8. HEAD2 = '110H'
  9.  
  10. SCSI__    .macro    callname
  11.     move.w    #-1,SCF
  12.     *move.w    $0a0e.w,-(sp)        *現在処理中のIOCSコール番号(なければ-1)
  13.     moveq    #callname,d1
  14.     moveq    #_SCSIDRV,d0
  15.     trap    #15
  16.     *move.w    (sp)+,$0a0e.w        *現在処理中のIOCSコール番号(なければ-1)
  17.     .endm
  18.  
  19. DOS__    macro    callname
  20.     move.w    #1,SCF
  21.     .dc.w    callname
  22.     clr.w    SCF
  23.     endm
  24.  
  25. FadeOutSpeed    equ    8*5        *1秒に下がるボリューム
  26.  
  27.  
  28. SCSI_USECHK_MODE1 equ 1            *使用しないなら __ を付ける
  29. __TARGET_USECHK_MODE1 equ 1        *使用しないなら __ を付ける
  30.  
  31.  
  32. TnLC_=8000    *今のカウント
  33.  
  34. DefTrkMax = 200
  35. TrkMax = 1024
  36. PrgMax = 256
  37.  
  38. StartStatio:*******************常駐部
  39. SS:
  40.     jbra    init
  41. head:
  42.     .dc.l    HEAD1
  43.     .dc.l    HEAD2
  44.     .even
  45.  
  46.     .dc.l    'CDC_trap'
  47. st:
  48. TRP5:*=========================================
  49.     *    ($25)[$0094]
  50.     *    TRAP 5
  51.     *
  52. TRP5_ = $0094.w
  53.     jbra    tr5s
  54. tr5tabs:
  55.     .dc.l    tr5_00,tr5_01,tr5_02,tr5_03,tr5_04,tr5_05,tr5_06,tr5_07
  56.     .dc.l    tr5_08,tr5_09,tr5_0a,tr5_0b,tr5_0c,tr5_0d,tr5_0e,tr5_0f
  57.     .dc.l    tr5_10,tr5_11,tr5_12,tr5_13,tr5_14,tr5_15,tr5_16,tr5_17
  58.     .dc.l    tr5_18,tr5_19,tr5_1a,tr5_1b,tr5_1c,tr5_1d,tr5_1e,tr5_1f
  59.     .dc.l    tr5_20,tr5_21,tr5_22,tr5_23,tr5_24,tr5_25,tr5_26,tr5_27
  60.     .dc.l    tr5_28,tr5_29,tr5_2a,tr5_2b,tr5_2c,tr5_2d,tr5_2e,tr5_2f
  61.     .dc.l    tr5_30,tr5_31,tr5_32,tr5_33,tr5_34,tr5_35,tr5_36,tr5_37
  62.     .dc.l    tr5_38,tr5_39,tr5_3a,tr5_3b,tr5_3c,tr5_3d,tr5_3e,tr5_3f
  63. TRP5_JPT:
  64.     .dc.l    $00000000.l
  65.  
  66.  
  67. _FgetsInit:
  68.     *==========================================
  69.     *        備考)アドレッシングの関係で頭に置きます
  70.     *------------------------------------------
  71.     *一度に読むバイト数
  72. TREADMJ equ 2048
  73.     *残り最低必要バイト数 2336 byte 以下であること!
  74. TREADJ equ 128
  75.     move.l    #TREADMJ,FgetsPT
  76.     rts
  77. _Fgets:    *------------------------------------------
  78.     *    ファイルから1行をバッファに読み込み
  79.     *    Fgets(f)
  80.     movea.l    4(sp),a2        *ファイルポインタ
  81.     move.w    a2,FgetsFP
  82.         *--------------残り文字数はいくつ?
  83.     move.l    FgetsPT(pc),d1
  84.     cmp.l    #TREADMJ-TREADJ,d1
  85.     bcc    @f
  86.         *--------------十分ある
  87.     lea    FgetsPTR(pc),a1
  88.     adda.l    d1,a1
  89.     bra    2f
  90. @@:        *--------------バッファ内のデータ移動
  91.     cmpi.l    #TREADMJ,d1
  92.     beq    1f
  93.     lea    FgetsPTR(pc),a1
  94.     adda.l    d1,a1
  95.     lea    FgetsPTR(pc),a0
  96.     move.l    #TREADMJ,d1
  97.     sub.l    FgetsPT(pc),d1
  98.     subq.w    #1,d1
  99. @@:    move.b    (a1)+,(a0)+
  100.     dbra    d1,@b
  101. 1:        *--------------[TREADMJ]コ読む
  102.     lea    FgetsPTR(pc),a1
  103.     move.l    #TREADMJ,d1
  104.     sub.l    FgetsPT(pc),d1
  105.     adda.l    d1,a1            *足りない頭のadds
  106.     move.l    FgetsPT(pc),-(sp)    *足りない分読む
  107.     move.l    a1,-(sp)
  108.     move.w    FgetsFP(pc),-(sp)
  109.     DOS__    _READ
  110.     lea    10(sp),sp
  111.     tst.l    d0
  112.     jbpl    @f
  113.     moveq    #-1,d0    *エラー
  114.     rts
  115. @@:
  116.     lea    FgetsPTR(pc),a1
  117.     moveq    #0,d1            *d1=文字バイト数
  118. 2:
  119.     movea.l    a1,a2
  120.     move.b    (a1),d0
  121.     bne    @f
  122.     moveq    #0,d0    *0;終了
  123.     rts
  124. @@:
  125. _fgL2:    move.b    (a1)+,d0
  126.     jbeq    _fgL3
  127.     cmpi.b    #$0d,d0            *改行だから終わり
  128.     jbeq    _fgL1_
  129.     cmpi.b    #$0a,d0            *改行だから終わり
  130.     jbeq    _fgL1
  131.  
  132.     cmpi.b    #$80,d0                *全角
  133.     jbcs    @f
  134.     cmpi.b    #$9F+1,d0
  135.     jbcs    _fgL4
  136. @@:    cmpi.b    #$E0,d0
  137.     jbcc    _fgL4
  138.  
  139.     addq.l    #1,d1
  140.     cmpi.l    #TREADMJ,d1
  141.     jbcc    _fgL3
  142.     jbra    _fgL2
  143. _fgL4:
  144.     move.b    (a1)+,d0
  145.     addq.l    #2,d1
  146.     cmpi.l    #TREADMJ,d1
  147.     jbcc    _fgL3
  148.     jbra    _fgL2
  149.  
  150. _fgL3:
  151.     clr.b    (a1)
  152.     move.l    d1,FgetsPT
  153.     move.l    a2,d0
  154.     rts
  155. _fgL1_:
  156.     addq.l    #1,d1
  157. _fgL1:
  158.     addq.l    #1,d1
  159.     move.b    #0,-1(a1)
  160.     move.l    d1,FgetsPT
  161.     move.l    a2,d0
  162.     rts
  163.  
  164. _buf2k:        * SCSI-COM 用バッファ 兼
  165. FgetsPTR:    *            読み込み用バッファ
  166.     .ds.b    2000
  167. _buf32:    .ds.b     336            *たして 2336byte いる
  168.     .dc.b    0,0
  169.     .even
  170. FgetsFP:
  171.     .dc.w    0
  172. FgetsPT:
  173.     .dc.l    TREADMJ    *現在の有効文字開始バイト数
  174.  
  175. _FseekTop:
  176.     *------------------------------------------
  177.     *    ファイルを頭に
  178.     move.l    4(sp),d1        *ファイルポインタ
  179.     move.w    #0,-(sp)
  180.     move.l    #0,-(sp)
  181.     move.w    d1,-(sp)
  182.     DOS__    _SEEK
  183.     addq.l    #8,sp
  184.     rts
  185.  
  186.  
  187. SCALL:*=========================================
  188.     *    ($1F5)[$07D4]
  189.     *    SCSI-CALL
  190.     *
  191. SCALL_ = $07D4.w
  192. *    tst.b    ScIocsSwc
  193. *    beq    @f
  194. *    moveq    #2,d0                *戻り値にエラーを付ける
  195. *    rts
  196. *@@:
  197.     tst.w    _ScscChksw        *1;STSIN MSGIN の実行待ち
  198.     beq    @f
  199.     jbsr    _scsi_cmd_chk_s
  200. @@:
  201.     move.b    #1,ScIocsSwc
  202.     tst.w    _CdcMode            *1:運転中 0:停止中
  203.     jbeq    SCALL_EE
  204.     *======CDCで呼んだかチェック?
  205.     tst.w    SCF                *CDCで呼んだ?
  206.     beq    @f
  207.     bpl    SCALL_EE
  208.     clr.w    SCF
  209.     bra    SCALL_EE
  210. @@:
  211.     *======コマンドチェック
  212.     cmpi.l    #_S_RESET,d1            *RESETなら
  213.     beq    SCALL_JP
  214.     cmpi.l    #_S_CMDOUT,d1            *CMDOUT未満なら
  215.     bcs    @f
  216.     cmpi.l    #_S_INQUIRY,d1            *INQUIRY未満なら
  217.     bcs    SCALL_EE
  218.     beq    SCALL_EE            *INQUIRYなら
  219. @@:
  220.     *======IDチェック
  221.     *cmp.l    _SCSI_IDF(pc),d4        *SCSI ID,LUNは?
  222.     cmp.w    _SCSI_ID+2(pc),d4        *SCSI IDは?
  223.     bne    SCALL_EE
  224.     *======テストユニット エミュ?
  225.     cmpi.l    #_S_TESTUNIT,d1            *_S_TESTUNITなら
  226.     bne    1f
  227.     tst.w    _TestunitSw        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  228.     beq    1f
  229.     bpl    @f
  230.     *======-1;AUDIOONLYなら未挿入
  231.     tst.w    _CDIN                *0:CDは入っていない 1:入っている
  232.     beq    @f
  233.     tst.w    _DtTrak                *1;データトラック有り,-1;データのみ
  234.     bne    @f
  235.     *bsr    _EJE_EMU2
  236.     moveq    #1,d0                *戻り値にエラーを付ける
  237.     clr.b    ScIocsSwc
  238.     rts
  239. @@:    *======1;演奏中未挿入
  240.     tst.w    _TrkNo
  241.     beq    1f
  242.     bsr    _EJE_EMU2
  243.     moveq    #1,d0                *戻り値にエラーを付ける
  244.     clr.b    ScIocsSwc
  245.     rts
  246.  
  247. 1:    tst.w    _REQU_PTR            *エラーはある?
  248.     beq    SCALL_EE
  249.     *======REQUESTならエラー エミュ?
  250.     cmpi.l    #_S_REQUEST,d1            *_S_REQUESTなら
  251.     bne    SCALL_L1
  252.     movem.l    a0/a1,-(sp)
  253.     move.l    d3,d0                *万が一d3が0なら終わる
  254.     beq    1f
  255.     subq.l    #1,d0
  256.     lea    _REQU_PTR,a0
  257. @@:    move.b    (a0)+,(a1)+
  258.     dbra    d0,@b
  259. 1:
  260.     clr.w    _REQU_PTR
  261.     movem.l    (sp)+,a0/a1
  262.     move.l    _REQU_D0,d0            *エラーエミュで終了
  263.     clr.b    ScIocsSwc
  264.     rts
  265. SCALL_L1:*=====エラーエミュスタンバイされている?
  266.     cmpi.l    #$20,d1                *戻り値がメッセージフェイズのコール?
  267.     bcs    SCALL_EE
  268.     tst.w    _REQU_CHK
  269.     beq    SCALL_EE
  270.     clr.w    _REQU_CHK
  271.     moveq    #2,d0                *戻り値にエラーで終わり
  272.     clr.b    ScIocsSwc
  273.     rts
  274.  
  275. SCALL_EE:*=====SCSIバスチェック
  276.     .ifdef SCSI_USECHK_MODE1
  277.         cmpi.l    #_S_SELECT,d1        * SELECT ?
  278.         beq    @f
  279.         cmpi.l    #_S_SELECTA,d1
  280.         bne    1f
  281.     @@:    *====== セレクションなら
  282.         bsr    SCALL_JP
  283.         tst.l    d0                *繋がった?
  284.         bne    @f
  285.         move.w    #1,SUC                * 1;ならSCSIバスは使用中
  286.     @@:    clr.b    ScIocsSwc
  287.         rts
  288.     1:
  289.         cmpi.l    #_S_CMDOUT,d1        * CMDOUT ?
  290.         bne    1f
  291.         *======コマンドアウトなら
  292.         bsr    SCALL_JP
  293.         tst.l    d0                * OK ?
  294.         beq    @f
  295.         clr.w    SUC                * 1;ならSCSIバスは使用中
  296.     @@:    clr.b    ScIocsSwc
  297.         rts
  298.     1:
  299.         cmpi.l    #_S_MSGIN,d1        * MSGIN ?
  300.         bne    @f
  301.         *======メッセージインなら
  302.         clr.w    SUC                * 1;ならSCSIバスは使用中
  303.         bra    SCALL_JP
  304.     @@:
  305.     .endif
  306.  
  307. SCALL_JP:
  308.     bsr    SCALL_JMP
  309.     clr.b    ScIocsSwc
  310.     rts
  311.  
  312. SCALL_JMP:
  313.     *moveq    #_SCSIDRV,d0
  314.     move.l    SCALL_JPT(pc),-(sp)
  315.     rts
  316. SCALL_JPT:
  317.     .dc.l    0
  318.  
  319. SCF:    .dc.w    0
  320. SUC:    .dc.w    0    * 1;ならSCSIバスは使用中
  321.  
  322.  
  323. PWSW:*=========================================
  324.     *    ($42)[$0108]
  325.     *    フロントスイッチ
  326.     *
  327. PWSW_ = $0108.w
  328.     movem.l    d0-d7/a0-a6,-(sp)
  329.      jbsr    _CDCOFF
  330.  
  331.      *jbsr    ScsiUseChk            *ver 1.09Aまでの処理
  332.      *jbne    PWSW_JMP
  333.      *jbsr    _ZeroUnit
  334.  
  335.     moveq    #_SCSIDRV,d0
  336.     moveq    #_S_RESET,d1
  337.     jsr    SCALL_JMP
  338.  
  339.     movem.l    (sp)+,d0-d7/a0-a6
  340. PWSW_JMP:
  341.     move.l    PWSW_JPT(pc),-(sp)
  342.     rts
  343. PWSW_JPT:
  344.     .dc.l    0
  345.  
  346.  
  347. MFP:*=========================================
  348.     *    ($4C)[$0130]
  349.     *    MFP  キーシリアル
  350.     *
  351. MFP_ = $0130.w
  352.     tst.w    _KeySwi
  353.     jbeq    MFP_JMP
  354.  
  355.     move.l    d7,-(sp)
  356.     move.b    $00E8802F,d7
  357.     btst    #7,d7
  358.     jbeq    @f    *押された
  359.     clr.w    _KeyPush
  360.     jbra    MP_L1
  361. @@:
  362.     bclr.b    #4,IMRA                *キー入力割り込みマスククリア
  363.     move.w    #1,_KeyPush
  364.     jbsr    CmdCord
  365.     jbeq    MP_L1_                *CDC用キーでない
  366.  
  367.     movem.l    d0-d1,-(sp)
  368.      move.b    $800+$0E,d0
  369.      swap    d0
  370.      move.w    $800+$0A,d0
  371.      andi.l    #$000FE003,d0
  372.      cmp.l    _SFTK(pc),d0
  373.      bne    MP_L2
  374.      tst.w    MFP_cmd
  375.      beq    MP_L4
  376.      tst.w    MFP_cmd+2
  377.      beq    @f
  378.      move.w    MFP_cmd+2(pc),MFP_cmd
  379. @@:     move.w    d7,MFP_cmd+2
  380.      bra    MP_L3
  381. MP_L4:     move.w    d7,MFP_cmd
  382. MP_L3:    movem.l    (sp)+,d0-d1
  383.     bset.b    #4,IMRA                *キー入力割り込みマスクセット
  384.     move.l    (sp)+,d7
  385.     rte
  386. MP_L2:
  387.     movem.l    (sp)+,d0-d1
  388. MP_L1_:
  389.     bset.b    #4,IMRA                *キー入力割り込みマスクセット
  390. MP_L1:
  391.     move.l    (sp)+,d7
  392.  
  393. MFP_JMP:
  394.     move.l    MFP_JPT(pc),-(sp)
  395.     rts
  396. MFP_JPT:
  397.     .dc.l    0
  398. MFP_JPT_:
  399.     .dc.l    0
  400.  
  401. MFP_BAK:
  402.     .dc.l    0
  403. MFP_cmd:
  404.     .dc.w    0    *コマンドキーバッファ
  405.     .dc.w    0    *コマンドキーバッファ
  406. INTVCS:    *-----------------------------
  407.     *    [$FF25]
  408.     *        設定&アドレス返し
  409. INTVCS_ = $FF25
  410.     cmpi.w    #$004C,(a6)            *キー入力か?
  411.     jbne    INTVCS_JMP
  412.     move.l    MFP_JPT(pc),-(sp)
  413.     move.l    2(a6),d0
  414.     move.l    d0,MFP_JPT
  415.     move.l    (sp)+,d0
  416.     rts
  417.  
  418. INTVCS_JMP:
  419.     move.l    INTVCS_JPT(pc),-(sp)
  420.     rts
  421. INTVCS_JPT:
  422.     .dc.l    0
  423. INTVCG:    *-----------------------------
  424.     *    [$FF35]
  425.     *        アドレス返し
  426. INTVCG_ = $FF35
  427.     cmpi.w    #$004C,(a6)            *キー入力か?
  428.     jbne    @f
  429.     move.l    MFP_JPT(pc),d0
  430.     rts
  431. @@:
  432. INTVCG_JMP:
  433.     move.l    INTVCG_JPT(pc),-(sp)
  434.     rts
  435. INTVCG_JPT:
  436.     .dc.l    0
  437.  
  438.  
  439. BITSNS:*=========================================
  440.     *    ($104)[$0410]
  441.     *    IOCS $04 BITSNS
  442.     *                ちょっと重いかも知れない
  443.     *                どこかがフックされたら働く、
  444.     *                と言う方がいいかも知れない
  445.     *
  446. BITSNS_ = $0410
  447.     tst.l    IocsSwc
  448.     jbne    BITSNS_JMP
  449.  
  450.     tst.w    _ScscChksw        *1;STSIN MSGIN の実行待ち
  451.     beq    1f
  452.     movem.l    d0-d1,-(sp)
  453.     jbsr    PHASE_DISP
  454.     andi.b    #$07,d0
  455.     cmpi.b    #$03,d0
  456.     bne    @f
  457.     bsr    _scsi_cmd_chk
  458. @@:    movem.l    (sp)+,d0-d1
  459. 1:
  460.  
  461.     tst.w    SUC                * 1;ならSCSIバスは使用中
  462.     jbne    BITSNS_JMP
  463.  
  464.     tst.w    MFP_cmd
  465.     jbne    @f
  466.     jbsr    NokeySeek
  467.     jbra    BS_EE
  468. @@:
  469.     move.b    #1,IocsSwc
  470.     movem.l    d0-d7/a0-a6,-(sp)
  471.     move.w    MFP_cmd(pc),d0
  472.     move.w    MFP_cmd+2(pc),MFP_cmd
  473.     clr.w    MFP_cmd+2
  474.     jbsr    KeySns
  475.     movem.l    (sp)+,d0-d7/a0-a6
  476. BS_EE:
  477.     jbsr    LoopChk
  478.     clr.b    IocsSwc
  479. BITSNS_JMP:
  480.     move.l    BITSNS_JPT(pc),-(sp)
  481.     rts
  482. BITSNS_JPT:
  483.     .dc.l    0
  484.  
  485.  
  486. B_KEYSNS:*=========================================
  487.     *    ($101)[$0404]
  488.     *    IOCS $01 B_KEYSNS
  489.     *
  490. B_KEYSNS_ = $0404
  491.     jbsr    B_KEYSNS_JMP
  492.     tst.l    IocsSwc
  493.     jbeq    @f
  494.     rts
  495. @@:
  496.  
  497.     tst.w    _ScscChksw        *1;STSIN MSGIN の実行待ち
  498.     beq    1f
  499.     movem.l    d0-d1,-(sp)
  500.     jbsr    PHASE_DISP
  501.     andi.b    #$07,d0
  502.     cmpi.b    #$03,d0
  503.     bne    @f
  504.     bsr    _scsi_cmd_chk
  505. @@:    movem.l    (sp)+,d0-d1
  506. 1:
  507.  
  508.     tst.w    SUC                * 1;ならSCSIバスは使用中
  509.     jbeq    @f
  510.     rts
  511. @@:    tst.w    MFP_cmd
  512.     jbne    @f
  513.     jbsr    NokeySeek
  514.     jbra    BKS_L3
  515. @@:
  516.     movem.l    d0-d7/a0-a6,-(sp)
  517.      move.w    MFP_cmd(pc),d0
  518.      move.w    MFP_cmd+2(pc),MFP_cmd
  519.      clr.w    MFP_cmd+2
  520.      jbsr    KeySns
  521.     movem.l    (sp)+,d0-d7/a0-a6
  522. BKS_L3:
  523.     tst.w    _KeySwi
  524.     jbeq    BKS_L2
  525.     tst.l    d0
  526.     jbne    @f
  527.     jbsr    NokeySeek
  528.     jbra    BKS_L2                *0なら終わり
  529. @@:
  530.     movem.l    d0-d7/a0-a6,-(sp)
  531.     move.l    d0,d7
  532.     lsr.w    #8,d7
  533.     jbsr    CmdCord
  534.     jbeq    BKS_L1                *CDC用キーでない
  535.  
  536.     move.l    d0,d7
  537.      move.b    $800+$0E,d0
  538.      swap    d0
  539.      move.w    $800+$0A,d0
  540.      andi.l    #$000FE003,d0
  541.      cmp.l    _SFTK(pc),d0
  542.      bne    BKS_L1
  543.  
  544.     move.l    d7,d0
  545.     lsr.w    #8,d0
  546.     jbsr    KeySns        **
  547.     jbne    BKS_L1
  548.             *あった (=キーバッファに入れない)
  549.     jbsr    B_KEYSNS_JMP        *念のため呼ぶ(file関係の時にキーバッファーが使われる?)
  550.     tst.l    d0
  551.     jbeq    BKS_L4
  552.     IOCS    _B_KEYINP
  553. BKS_L4:    movem.l    (sp)+,d0-d7/a0-a6
  554.     moveq    #0,d0
  555.     rts
  556. BKS_L1:
  557.     movem.l    (sp)+,d0-d7/a0-a6
  558. BKS_L2:
  559.     jbsr    LoopChk
  560.     rts
  561.  
  562. B_KEYSNS_JMP:
  563.     move.l    B_KEYSNS_JPT(pc),-(sp)
  564.     rts
  565. B_KEYSNS_JPT:
  566.     .dc.l    0
  567.  
  568.  
  569.  
  570. _Rand:    *------------------------------------------
  571.     move.l    _RKB(pc),d0
  572.     mulu    #5,d0
  573.     addq.l    #1,d0
  574.     andi.l    #$0FFF,d0
  575.     move.l    d0,_RKB
  576.     rts
  577.  
  578. _Randomize:*---------------------------------------
  579.     move.l    4(sp),_RKB        * 基板に記憶
  580.     rts
  581.  
  582. _RKB:
  583.     .dc.l    0
  584.  
  585.     *------------------------------------------
  586.  
  587.  
  588.  
  589. KeySnsEM:
  590.     .dc.w    0    *0:KEY 1:TRAP
  591. KeySns:*=========================================
  592.     *
  593.     *    d0=キーボードコード
  594.     *
  595.     *[戻り値]    beq : 何かあった (=キーパッファに入れない)
  596.     *        bne : 何もなし
  597.     *
  598.     move.b    d0,d7
  599.     andi.l    #$007F,d7
  600.     jbeq    EE
  601.     lea    KST(pc),a0
  602.     add.w    d7,d7
  603.     adda.w    (a0,d7.w),a0
  604.     jmp    (a0)
  605.  
  606. EE:    moveq    #1,d0
  607.     rts
  608.  
  609. Kt:    .macro    A,B,C,D
  610.     .dc.w    A-KST,B-KST,C-KST,D-KST
  611.     .endm
  612. KST:
  613.     Kt    EE,Tesc,EE,EE            *│未定義│  ESC │  1!  │  2"  
  614.     Kt    EE,EE,EE,EE            *│  3#  │  4$  │  5%  │  6&  
  615.     Kt    Tsuz7,Tsuz8,Tsuz9,Trnd        *│  7'  │  8(  │  9)  │  0   
  616.     Kt    Tauto,EE,EE,Tbs            *│  -=  │  ^~  │  \|  │  BS  
  617.     Kt    Ttab,EE,TledU,Te        *│  TAB │  Q  │  W  │  E  
  618.     Kt    Tr,EE,EE,Tsuz4            *│  R  │  T  │  Y  │  U  
  619.     Kt    Tsuz5,Tsuz6,TsuzM,EE        *│  I  │  O  │  P  │  @`  
  620.     Kt    Trvtm,Tenter,TledL,TledR    *│  [   │ [CR] │  A  │  S  
  621.     Kt    EE,EE,EE,EE            *│  D  │  F  │  G  │  H  
  622.     Kt    Tsuz1,Tsuz2,Tsuz3,TsuzP        *│  J  │  K  │  L  │  ;+  
  623.     Kt    EE,Ttm,TledD,EE            *│  :*  │   ]  │  Z  │  X  
  624.     Kt    EE,EE,EE,EE            *│  C  │  V  │  B  │  N  
  625.     Kt    Tsuz0,Tmemview,Tmem,Tequ    *│  M  │  ,<  │  .>  │  /?  
  626.     Kt    Tenter,EE,Thome,Tdel        *│   _  │ [SP] │ HOME │  DEL 
  627.     Kt    Trew,Tff,Tundo,Trew_        *│Rollup│Rolldn│ UNDO │  ←  
  628.     Kt    Tvolup,Tff_,Tvoldn,Tclr        *│  ↑  │  →  │  ↓  │  CLR 
  629.     Kt    Trnd,Tauto,TsuzM,Tsuz7        *│  /  │  *  │  -  │  7  
  630.     Kt    Tsuz8,Tsuz9,TsuzP,Tsuz4        *│  8  │  9  │  +  │  4  
  631.     Kt    Tsuz5,Tsuz6,Tequ,Tsuz1        *│  5  │  6  │  =  │  1  
  632.     Kt    Tsuz2,Tsuz3,Tenter,Tsuz0    *│  2  │  3  │ ENTER│  0  
  633.     Kt    Tmemview,Tmem,Tkigou,Ttouroku    *│  ,  │  .  │ 記号 │ 登録 
  634.     Kt    EE,EE,EE,EE            *│ HELP │  XF1 │  XF2 │  XF3 
  635.     Kt    EE,EE,EE,EE            *│  XF4 │  XF5 │ かな │ ローマ字
  636.     Kt    EE,EE,EE,EE            *│コード│ CAPS │  INS │ ヒカナ 
  637.     Kt    EE,EE,EE,TF1            *│ 全角 │ BREAK│ COPY │ F1 
  638.     Kt    TF2,TF3,TF4,TF5            *│ F2 │ F3 │ F4 │ F5 
  639.     Kt    TF6,TF7,TF8,TF9            *│ F6 │ F7 │ F8 │ F9 
  640.     Kt    TF10,EE,EE,EE            *│ F10 │未定義│未定義│未定義
  641.     Kt    EE,EE,EE,EE            *│ SHIFT│ CTRL │ OPT.1│ OPT.2
  642.     Kt    EE,EE,EE,EE            *│未定義│未定義│未定義│未定義
  643.     Kt    EE,EE,EE,EE            *│未定義│未定義│未定義│未定義
  644.     Kt    EE,Tbankid,Tstmo,Tfadeo        *│未定義│未定義│未定義│未定義
  645.  
  646. CmdCord:***********************
  647.     *
  648.     *in    d7=キーデータ
  649.     *out    d7=キーデータ    0ならCDC用でない
  650.     *    beq ならCDC用でない
  651.     *
  652.     movem.l    d0/a0,-(sp)
  653.     moveq    #0,d0
  654.     move.b    d7,d0
  655.  
  656.     lea    KeyC_List,a0
  657.     move.b    0(a0,d0.w),d0
  658.     move.l    d0,d7
  659.  
  660.     lsr.w    #3,d0                * /8
  661.     lea    CmdC_List,a0
  662.     btst.b    d7,(a0,d0.w)
  663.     jbne    CmdC_L1
  664.     movem.l    (sp)+,d0/a0
  665.     moveq    #0,d7
  666.     rts
  667. CmdC_L1:
  668.     movem.l    (sp)+,d0/a0
  669.     andi.l    #$00FF,d7
  670.     rts
  671.  
  672. defccl:    .macro
  673.     .dc.b    %0000_0010 **│  6&  │  5%  │  4$  │  3#  │  2"  │  1!  │  ESC │未定義
  674.     .dc.b    %1000_0000 **│  BS  │  \|  │  ^~  │  -=  │  0   │  9)  │  8(  │  7'  
  675.     .dc.b    %0001_1101 **│  U  │  Y  │  T  │  R  │  E  │  W  │  Q  │  TAB 
  676.     .dc.b    %1101_0000 **│  S  │  A  │ [CR] │  [   │  @`  │  P  │  O  │  I  
  677.     .dc.b    %0000_0000 **│  ;+  │  L  │  K  │  J  │  H  │  G  │  F  │  D  
  678.     .dc.b    %0000_0110 **│  N  │  B  │  V  │  C  │  X  │  Z  │   ]  │  :*  
  679.     .dc.b    %1100_0000 **│  DEL │ HOME │ [SP] │   _  │  /?  │  .>  │  ,<  │  M  
  680.     .dc.b    %1010_1111 **│  CLR │  ↓  │  →  │  ↑  │  ←  │ UNDO │Rolldn│Rollup
  681.     .dc.b    %1111_1111 **│  4  │  +  │  9  │  8  │  7  │  -  │  *  │  /  
  682.     .dc.b    %1111_1111 **│  0  │ ENTER│  3  │  2  │  1  │  =  │  6  │  5  
  683.     .dc.b    %0000_1011 **│  XF3 │  XF2 │  XF1 │ HELP │ 登録 │ 記号 │  .  │  ,  
  684.     .dc.b    %0000_0000 **│ ヒカナ │  INS │ CAPS │コード│ ローマ字│ かな │  XF5 │  XF4 
  685.     .dc.b    %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  686.     .dc.b    %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  687.     .dc.b    %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
  688.     .dc.b    %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
  689.     .endm
  690.  
  691.     ******************* SEEKチェック
  692. NokeySeek:
  693.     tst.l    _SeekNow
  694.     jbpl    @f
  695.     rts
  696. @@:    tst.w    _KeyPush
  697.     jbeq    @f
  698.     rts
  699. @@:    move.w    d0,-(sp)
  700.     move.b    $800+8,d0
  701.     andi.b    #$44,d0
  702.     movem.w    (sp)+,d0        *フラグ破壊しないように・・・
  703.     jbeq    @f
  704.     rts
  705. @@:
  706. NokeySeek2:        *trap#5用name
  707.     move.l    d0,-(sp)
  708.     move.w    KeySnsEM,d0            *0;KEY 1;Trap で使用
  709.     cmp.w    _SeekNowMd,d0
  710.     jbne    MNkS_L1
  711.  
  712.     movem.l    d1-d7/a0-a6,-(sp)
  713.     *move.b    #1,IocsSwc
  714.     moveq    #0,d0
  715.     move.w    _SeekNowTk,d0
  716.     tst.w    _RndMode
  717.     jbne    @f
  718.     tst.w    _ReptMode
  719.     jbne    @f
  720.     tst.w    _MemLong
  721.     jbne    @f
  722.     moveq    #-1,d0
  723. @@:
  724.     move.l    d0,-(sp)
  725.      move.w    _SeekNowTk,d0
  726.      add.w    d0,d0
  727.      add.w    d0,d0
  728.      movea.l _pListStTm,a0
  729.      move.l    (a0,d0.w),-(sp)
  730.      move.l    _SeekNow,-(sp)
  731.      jbsr    _addtime
  732.      addq.l    #8,sp
  733.     move.l    d0,-(sp)
  734.     jbsr    _CdPlay_hf
  735.     addq.l    #8,sp
  736.     move.l    #-1,_SeekNow
  737.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  738.     jbsr    _MemChkT
  739.     jbsr    _B_KLE_D
  740.  
  741.     *clr.b    IocsSwc
  742.     movem.l    (sp)+,d1-d7/a0-a6
  743.     clr.w    _TsekSw                *連続シーク値
  744. MNkS_L1:
  745.     move.l    (sp)+,d0
  746.     rts
  747.  
  748.  
  749. _CdcModeOn::    *1:運転中
  750.     tst.w    _CdcMode            *1:運転中
  751.     jbeq    @f
  752.     rts
  753. @@:    move.w    #-1,_CdcMode            *1:運転中
  754.     tst.w    _JukeBox            *0:ノーマル 1:JukeBox
  755.     beq    @f
  756.     move.w    #1,_CDIN
  757. @@:    rts
  758.  
  759.     ******************移動関係
  760. TledL:
  761.     jbsr    _CdcModeOn
  762.     move.l    #-1,TledMS
  763.     move.l    _DRAWADDS,d0
  764.     andi.w    #$7F,d0
  765.     jbne    @f
  766.     moveq    #0,d0
  767.     rts
  768. @@:
  769. TledMove:
  770.     jbsr    FnkBerChk
  771.     jbeq    @f
  772.     jbsr    KillLeds
  773.     move.l    TledMS,d0
  774.     add.l    d0,_DRAWADDS
  775.     jbsr    DrawLeds
  776. @@:    moveq    #0,d0
  777.     rts
  778. TledMS:
  779.     .dc.l    0
  780.  
  781. TledR:
  782.     jbsr    _CdcModeOn
  783.     move.l    #1,TledMS
  784.     move.l    _DRAWADDS,d0
  785.     andi.w    #$7F,d0
  786.     *cmpi.w    #128-(36+1+10),d0
  787.     cmpi.w    #128-(10),d0
  788.     jbcs    TledMove
  789.     moveq    #0,d0
  790.     rts
  791. TledU:
  792.     jbsr    _CdcModeOn
  793.     move.l    #-$800,TledMS
  794.     move.l    _DRAWADDS,d0
  795.     andi.l    #$1F800,d0
  796.     jbne    TledMove
  797.     moveq    #0,d0
  798.     rts
  799. TledD:
  800.     jbsr    _CdcModeOn
  801.     move.l    #$800,TledMS
  802.     move.l    _DRAWADDS,d0
  803.     andi.l    #$1F800,d0
  804.     cmpi.l    #$800*62,d0
  805.     jbcs    TledMove
  806.     moveq    #0,d0
  807.     rts
  808.  
  809.  
  810. Tvolup:**********[↑]
  811.     jbsr    _CdcModeOn
  812.     *jbsr    _NowVol
  813.     moveq    #0,d0
  814.     move.w    _Volum,d0
  815.     cmpi.l    #255,d0
  816.     beq    1f
  817.     addq.l    #5,d0
  818.     cmpi.l    #255+1,d0
  819.     bcs    @f
  820.     move.l    #255,d0
  821. @@:    move.l    d0,-(sp)
  822.     jbsr    _ChnVol
  823.     addq.l    #4,sp
  824.     clr.w    _Fadeouting    * 0:ノーマル 1:フェードアウト中
  825. 1:
  826.     jbsr    _WaitCC2    *今の1/100s
  827.     jbra    _B_KLE_V
  828.  
  829.  
  830. Tvoldn:**********[↓]
  831.     jbsr    _CdcModeOn
  832.     *jbsr    _NowVol
  833.     moveq    #0,d0
  834.     move.w    _Volum,d0
  835.     cmpi.l    #1,d0
  836.     beq    1f
  837.     subq.l    #5,d0
  838.     cmpi.l    #2,d0
  839.     bcc    @f
  840.     moveq    #1,d0
  841. @@:    move.l    d0,-(sp)
  842.     jbsr    _ChnVol
  843.     addq.l    #4,sp
  844.     clr.w    _Fadeouting    * 0:ノーマル 1:フェードアウト中
  845. 1:
  846.     jbsr    _WaitCC2    *今の1/100s
  847.     jbra    _B_KLE_V
  848.  
  849. Tfadeo:**********[未定義] フェードアウトボタン
  850.     jbsr    _CdcModeOn
  851.     tst.w    _MastVol
  852.     beq    @f            * ボリュームなしなら
  853.     *======フェードアウト開始
  854.     tst.w    _Fadeouting
  855.     bne    @f            **既にfadeoutしている
  856.         **fadeout開始
  857.     move.w    _Volum,_FadeoutVol    * フェードアウト中のボリューム
  858.     move.w    #1,_Fadeouting
  859. @@:    moveq    #0,d0
  860.     rts
  861.  
  862. Tstmo:**********[未定義] ステレオ <-> モノラル ボタン
  863.     jbsr    _CdcModeOn
  864.     jbsr    _ChnStMono
  865.     moveq    #0,d0
  866.     rts
  867.  
  868. Ttab:**********[TAB]
  869.     jbsr    _CdcModeOn
  870.     not.w    _DisForce
  871.     moveq    #0,d0
  872.     rts
  873.  
  874.  
  875. Ttouroku:**********[登録]
  876.     jbsr    _CdcModeOn
  877.     jbsr    _ChkCdRom
  878.     jbsr    _B_KLE_LD
  879.     jbsr    _CdListRead
  880.     jbsr    _MemChkT
  881.     jbsr    _WaitCC    *今の1/100s
  882.     addi.w    #300,_KeyTD            *すぐに実行されるように
  883.     jbra    _B_KLE_D
  884.  
  885.  
  886. Tenter:******[ENTER]
  887.     jbsr    _CdcModeOn
  888.     jbsr    _ChkCdRom
  889.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  890.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  891.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  892.  
  893.     tst.w    _CDIN                *CD は入ってル?
  894.     bne    @f
  895.     jbsr    _CdReload            *一応トレイを閉じてみる
  896.     jbsr    _ChkCdRom            *一応チェックをする
  897.     tst.w    _CDIN                *CD は入ってル?
  898.     beq    _B_KLE_D            *ないなら終わり
  899. @@:
  900.     jbsr    Tent_sub
  901.     jbra    _B_KLE_D
  902.  
  903. Tent_sub:
  904.     tst.w    _CDIN
  905.     jbne    @f
  906.     rts
  907. @@:    move.w    _MemLong,d0
  908.     jbeq    Tes_J1
  909.         *めもりー
  910.     move.w    #-1,_MemMode
  911.     clr.w    _MemPt
  912.     jbsr    _DisSuuziCalc
  913.     move.l    d0,d7
  914.     jbeq    Tes_J2
  915.     move.l    _CdTrak,d0
  916.     cmp.l    d0,d7
  917.     jbhi    Tes_J2                *d1<=d0max
  918.     move.l    d7,-(sp)
  919.     move.l    d7,-(sp)
  920.     jbsr    _CdPlay_hf
  921.     addq.l    #8,sp
  922.     *move.l    d0,-(sp)
  923.     jbsr    _MemChkT
  924.     *move.l    (sp)+,d0
  925.     rts
  926. Tes_J2:
  927.     moveq    #0,d0
  928.     move.b    _MemSock,d0            *メモリの1つめを再生
  929.     move.l    d0,-(sp)
  930.     move.l    d0,-(sp)
  931.     jbsr    _CdPlay_hf
  932.     addq.l    #8,sp
  933.     rts
  934.  
  935. Tes_J1:
  936.     jbsr    _DisSuuziCalc
  937.     move.l    d0,d7
  938.     jbeq    Tes_L1
  939.     move.l    _CdTrak,d0
  940. @@:    cmp.l    d0,d7
  941.     jbhi    Tes_L1                *d1<=d0max
  942.  
  943. @@:    move.l    #-1,-(sp)
  944.     move.l    d7,-(sp)
  945.     jbsr    _CdPlay_hf
  946.     addq.l    #8,sp
  947.     rts
  948.  
  949. Tes_L1:    *jbsr    _CdPlay_all
  950.     move.l    #-1,-(sp)
  951.     move.l    #1,-(sp)
  952.     jbsr    _CdPlay_hf
  953.     addq.l    #8,sp
  954.     rts
  955.  
  956.  
  957. Tequ:******* [=]
  958.     *    ストップ
  959.     jbsr    _CdcModeOn
  960.     jbsr    _ChkCdRom
  961.     tst.w    _TrkNo
  962.     jbne    @f
  963.     jbra    _B_KLE_D
  964. @@:
  965.     tst.w    _CDIN
  966.     jbeq    _B_KLE_D            *err end
  967.     move.l    _plyinf,d0
  968.     cmpi.b    #$11,d0
  969.     jbne    Tcont
  970.         *stop
  971.     jbsr    _StpDsk
  972.     move.w    #-1,_PauseMode            *0:特に 1:ポーズ中
  973.     jbra    _B_KLE_D
  974. Tcont:        *cont
  975.     jbsr    _Resume
  976.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  977.     jbra    _B_KLE_D
  978.  
  979.  
  980. Tclr:********* [CLR]
  981.     jbsr    _CdcModeOn
  982.     jbsr    _ChkCdRom
  983.     jbsr    _ZeroUnit
  984.     clr.w    _AutoMode            *0:ノーマル 1:オート
  985.     clr.w    _RndMode            *0:ノーマル 1:ランダム
  986.     jbsr    _FlgClrS
  987.     clr.l    _SetNameAdd
  988.     jbra    _B_KLE_D
  989.  
  990. _FlgClrS:
  991.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  992.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  993.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  994.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  995.     clr.w    _TrkNo
  996.     clr.w    _TrkNoS
  997.     clr.w    _DisSuuzi10            * LED用数字クリア
  998.     move.w    #-1,_MemPt
  999.     move.w    #-1,_RndPt
  1000.     rts
  1001.  
  1002. _FlgClr:
  1003.     jbsr    _FlgClrS
  1004.     jbsr    _B_KLE_D2
  1005.     rts
  1006.  
  1007.     *--------------曲ステップ
  1008. Trew:********* バック
  1009.     jbsr    _CdcModeOn
  1010.     jbsr    _ChkCdRom
  1011.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  1012.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1013.     tst.w    _CDIN
  1014.     jbne    @f
  1015.     moveq    #0,d0    *err
  1016.     rts
  1017. @@:
  1018.     movem.l    d1-d2/a0-a2,-(sp)
  1019.     jbsr    _MDPlayingTimeChk
  1020.     movem.l    (sp)+,d1-d2/a0-a2
  1021.     tst.l    d0
  1022.     bne    @f
  1023.     move.l    _plyinf+8,d0            *plyinf.time
  1024.     cmpi.l    #$0000_0010,d0
  1025.     jbcc    1f
  1026. @@:    *-----1曲戻る
  1027.     move.w    #1,_PlayScMd
  1028.     move.l    #-1,-(sp)
  1029.     jbsr    _CdPlay_restart
  1030.     addq.l    #4,sp
  1031.     movem.l    d0-d7/a0-a6,-(sp)        *ダブルクリック対策
  1032.      move.w    MFP_cmd(pc),d0
  1033.      move.w    MFP_cmd+2(pc),MFP_cmd
  1034.      clr.w    MFP_cmd+2
  1035.      jbsr    KeySns
  1036.     movem.l    (sp)+,d0-d7/a0-a6
  1037.     jbra    _B_KLE_D
  1038. 1:
  1039.     *----- その曲の頭から
  1040.     move.w    #1,_PlayScMd
  1041.     move.l    #0,-(sp)
  1042.     jbsr    _CdPlay_restart
  1043.     addq.l    #4,sp
  1044.     jbra    _B_KLE_D
  1045.  
  1046. Tff:********* 進む
  1047.     jbsr    _CdcModeOn
  1048.     jbsr    _ChkCdRom
  1049.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  1050.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1051.     move.l    #1,-(sp)
  1052.     move.w    #1,_PlayScMd
  1053.     jbsr    _CdPlay_restart
  1054.     addq.l    #4,sp
  1055.     jbra    _B_KLE_D
  1056.  
  1057.     *--------------時間シーク
  1058. Trew_:********* バック
  1059.     jbsr    _CdcModeOn
  1060.     jbsr    _ChkCdRom
  1061.     tst.w    _CDIN
  1062.     jbne    @f
  1063.     rts
  1064. @@:    addq.w    #1,_TsekSw
  1065.     move.l    #-1,-(sp)
  1066.     jbsr    _SeekDisp
  1067.     addq.l    #4,sp
  1068.     tst.l    d0
  1069.     jbeq    _B_KLE_D
  1070.     move.w    KeySnsEM(pc),_SeekNowMd        *0;KEY 1;Trap で使用
  1071.     moveq    #0,d1
  1072.     jbra    _B_KLE_S
  1073. Tff_:********* 進む
  1074.     jbsr    _CdcModeOn
  1075.     jbsr    _ChkCdRom
  1076.     tst.w    _CDIN
  1077.     jbne    @f
  1078.     rts
  1079. @@:    addq.w    #1,_TsekSw
  1080.     move.l    #1,-(sp)
  1081.     jbsr    _SeekDisp
  1082.     addq.l    #4,sp
  1083.     tst.l    d0
  1084.     jbeq    _B_KLE_D
  1085.     move.w    KeySnsEM(pc),_SeekNowMd        *0;KEY 1;Trap で使用
  1086.     moveq    #1,d1
  1087.     jbra    _B_KLE_S
  1088. _TsekSw:
  1089.     .dc.w    0        *連続シーク値
  1090.  
  1091.  
  1092. Tundo:********* [UNDO]
  1093.     jbsr    _CdcModeOn
  1094.     jbsr    _ChkCdRom
  1095.     jbsr    _DisSuuziCalc
  1096.     move.l    d0,d7
  1097.     jbeq    Tundo_1
  1098.  
  1099.     move.l    _CdTrak(pc),d0
  1100.     cmp.l    d0,d7
  1101.     jbhi    Tundo_1                *d1<=d0max
  1102.     jbsr    _FlgClrS
  1103.     clr.w    _AutoMode            *0:ノーマル 1:オート
  1104.     clr.w    _RndMode            *0:ノーマル 1:ランダム
  1105.     move.w    #-1,_ReptMode            *0:ノーマル 1:リピート
  1106.     move.l    d7,-(sp)
  1107.     move.l    d7,-(sp)
  1108.     jbsr    _CdPlay_hf
  1109.     addq.l    #8,sp
  1110.     jbsr    _MemChkT
  1111.     jbra    _B_KLE_D
  1112.  
  1113. Tundo_1:
  1114.     tst.w    _TrkNo
  1115.     jbne    @f
  1116.     moveq    #0,d0
  1117.     rts
  1118. @@:    clr.w    _AutoMode            *0:ノーマル 1:オート
  1119.     clr.w    _RndMode            *0:ノーマル 1:ランダム
  1120.     move.w    #-1,_RndPt
  1121.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1122.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1123.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  1124.     clr.w    _DisSuuzi10            * LED用数字クリア
  1125.     not.w    _ReptMode            *0:ノーマル 1:リピート
  1126.     bne    @f
  1127.     tst.w    _MemLong
  1128.     beq    @f
  1129.     move.w    #-1,_MemMode            *メモリされていたら
  1130. @@:
  1131.     jbra    _B_KLE_D
  1132.  
  1133.  
  1134. Tauto:********* [*]auto
  1135.     jbsr    _CdcModeOn
  1136.     jbsr    _ChkCdRom
  1137.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  1138.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  1139.     not.w    _AutoMode            *0:ノーマル 1:オート
  1140.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1141.     tst.w    _TrkNo
  1142.     jbne    _B_KLE_D
  1143.     jbsr    Tent_sub *演奏
  1144.     jbra    _B_KLE_D
  1145.  
  1146.  
  1147. Trnd:********* [/] rand
  1148.     jbsr    _CdcModeOn
  1149.     jbsr    _ChkCdRom
  1150.     tst.w    _RndMode            *0:ノーマル 1:ランダム
  1151.     jbne    Trnd_L1
  1152.         *ランダムスタート
  1153.     move.w    #-1,_RndMode            *0:ノーマル 1:ランダム
  1154.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1155.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  1156.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  1157.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1158.     move.w    #1,_PlayScMd
  1159.     jbsr    _CdPlay_Rnd2
  1160.     move.l    d0,-(sp)
  1161.     move.l    d0,-(sp)
  1162.     jbsr    _CdPlay
  1163.     addq.l    #8,sp
  1164.     jbsr    _MemChkT
  1165.     jbra    _B_KLE_D
  1166. Trnd_L1:
  1167.         *ランダム停止(その曲終われば止まる)
  1168.     clr.w    _RndMode            *0:ノーマル 1:ランダム
  1169.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1170.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  1171.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  1172.     move.w    #-1,_RndPt
  1173.     jbra    _B_KLE_D
  1174.  
  1175.  
  1176. Tdel:********* [DEL]
  1177.     jbsr    _CdcModeOn
  1178.     jbsr    _ChkCdRom
  1179.     tst.w    _MemLong
  1180.     jbne    @f
  1181.     rts
  1182. @@:    subq.w    #1,_MemLong            *メモリながさ 0以外ならMEMORY
  1183.     jbeq    _B_KLE_D
  1184.     move.w    _MemLong(pc),_MemPtV        *確認表示用メモリポインタ
  1185.     subq.w    #1,_MemPtV            *確認表示用メモリポインタ
  1186.     jbsr    _MemChkT
  1187.     jbsr    _B_KLE_M
  1188.     jbsr    _WaitCC_300    *今の1/100s
  1189.     moveq    #0,d0
  1190.     rts
  1191.  
  1192.  
  1193. Tmem:************* [.] memory
  1194.     jbsr    _CdcModeOn
  1195.     jbsr    _ChkCdRom
  1196.     jbsr    _DisSuuziCalc
  1197.     move.l    d0,d7
  1198.     jbeq    _B_KLE_D
  1199.     move.l    _CdTrak(pc),d0
  1200. @@:    cmp.l    d0,d7
  1201.     jbls    @f                *d1<=d0max
  1202.     jbra    _B_KLE_D
  1203. @@:
  1204.     lea    _MemSock(pc),a1
  1205.     move.w    _MemLong(pc),d0
  1206.     cmpi.w    #PrgMax-1,d0
  1207.     jbcs    @f
  1208.     jbra    _B_KLE_D
  1209. @@:
  1210.     move.b    d7,0(a1,d0.w)            *登録
  1211.     move.w    _MemLong(pc),_MemPtV        *確認表示用メモリポインタ
  1212.     addq.w    #1,_MemLong
  1213.     jbsr    _B_KLE_M
  1214.     jbsr    _MemChkT
  1215.     jbsr    _WaitCC_300    *今の1/100s
  1216.     moveq    #0,d0
  1217.     rts
  1218.  
  1219.  
  1220. Tmemview:**********[,]
  1221.     jbsr    _CdcModeOn
  1222.     jbsr    _ChkCdRom
  1223.     tst.w    _MemLong
  1224.     jbne    @f
  1225.     rts
  1226. @@:    addq.w    #1,_MemPtV            *確認表示用メモリポインタ
  1227.     move.w    _MemPtV(pc),d0
  1228.     cmp.w    _MemLong(pc),d0            *  x,y   v(y)>=Long
  1229.     jbcs    @f
  1230.     move.w    #-1,_MemPtV            *MEM確認表示用メモリポインタ
  1231.     jbra    _B_KLE_D
  1232. @@:
  1233.     jbsr    _B_KLE_M
  1234.     jbsr    _WaitCC_300    *今の1/100s
  1235.     moveq    #0,d0
  1236.     rts
  1237.  
  1238.  
  1239. Ttm:    *******[ [  ]
  1240.     jbsr    _CdcModeOn
  1241.     jbsr    _ChkCdRom
  1242.     tst.w    _LEDTMRV
  1243.     jbne    @f
  1244.     moveq    #0,d0
  1245.     rts
  1246. @@:    clr.w    _LEDTMRV
  1247.     jbra    _B_KLE_D
  1248.  
  1249.  
  1250. Trvtm:    *******[  ]]
  1251.     jbsr    _CdcModeOn
  1252.     jbsr    _ChkCdRom
  1253.     addq.w    #1,_LEDTMRV
  1254.     and.w    #3,_LEDTMRV
  1255.     jbra    _B_KLE_D
  1256.  
  1257.  
  1258. Tkigou:    ******    [記号入力]
  1259.     jbsr    _CdcModeOn
  1260.     jbsr    _ChkCdRom
  1261.     jbra    _B_KLE_D
  1262.  
  1263.  
  1264. Thome:    ******    [HOME]
  1265.     jbsr    _CdcModeOn
  1266.     jbsr    _ChkCdRom
  1267.     jbsr    _B_KLE_H
  1268. *    tst.w    _MastVol
  1269. *    beq    @f
  1270. *    jbsr    _NowVol
  1271. *    move.w    d0,_Volum
  1272. *@@:
  1273.     tst.w    _CDIN
  1274.     jbeq    ThomeLE
  1275.     move.l    _plyinf,d0            *plyinf.fg
  1276.     cmpi.b    #$11,d0
  1277.     jbne    @f
  1278.     move.l    _plyinf+4,d0            *plyinf.track_no;
  1279.     move.w    d0,_TrkNo
  1280.     move.w    d0,_TrkNoS
  1281.     jbsr    _SetTrkLong
  1282. @@:    jbsr    _MemChkT
  1283. ThomeLE:
  1284.     jbsr    _WaitCC2    *今の1/100s
  1285.     moveq    #0,d0
  1286.     rts
  1287.  
  1288.  
  1289. Tesc:    ******    [ESC]
  1290. _CDCOFF:
  1291.     jbsr    FnkBerChk
  1292.     jbeq    @f
  1293.     jbsr    KillLeds
  1294. @@:
  1295.     clr.w    _CdcMode            *0:停止中
  1296.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  1297.     clr.l    IocsSwc                *白帯で1になったまま終わってしまうともう動かないので初期化
  1298.     clr.b    _CHARBUF            *LED文字
  1299.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  1300.     rts
  1301.  
  1302.  
  1303. Tbs:    ******    [BS]
  1304.     jbsr    _CdcModeOn
  1305.     jbsr    _ChkCdRom
  1306.     tst.w    _CdcMode
  1307.     jbne    @f
  1308.     rts
  1309. @@:    tst.w    _DisMode            *0;非表示 1;表示 2;Small表示
  1310.     jbne    1f
  1311.         *表示
  1312.     move.w    #1,_DisMode            *1;表示
  1313.     jbra    _B_KLE_D
  1314. 1:        *非表示
  1315.     jbsr    FnkBerChk
  1316.     jbeq    @f
  1317.     jbsr    KillLeds
  1318. @@:
  1319.     cmpi.w    #1,_DisMode            *0;非表示 1;表示 2;Small表示
  1320.     jbne    @f
  1321.         *small表示
  1322.     move.w    #2,_DisMode            *2;Small表示
  1323.     jbra    _B_KLE_D
  1324. @@:
  1325.     clr.w    _DisMode            *0;非表示
  1326.     rts
  1327.  
  1328.  
  1329.     ******** 数値(?)
  1330. Tsuz0:    moveq    #0,d7
  1331.     jbra    Tsuuzi
  1332. Tsuz1:    moveq    #1,d7
  1333.     jbra    Tsuuzi
  1334. Tsuz2:    moveq    #2,d7
  1335.     jbra    Tsuuzi
  1336. Tsuz3:    moveq    #3,d7
  1337.     jbra    Tsuuzi
  1338. Tsuz4:    moveq    #4,d7
  1339.     jbra    Tsuuzi
  1340. Tsuz5:    moveq    #5,d7
  1341.     jbra    Tsuuzi
  1342. Tsuz6:    moveq    #6,d7
  1343.     jbra    Tsuuzi
  1344. Tsuz7:    moveq    #7,d7
  1345.     jbra    Tsuuzi
  1346. Tsuz8:    moveq    #8,d7
  1347.     jbra    Tsuuzi
  1348. Tsuz9:    moveq    #9,d7
  1349. Tsuuzi:
  1350.     jbsr    _CdcModeOn
  1351.     jbsr    _ChkCdRom
  1352.     tst.w    _CDIN                *0:CDは入っていない 1:入っている
  1353.     bne    @f
  1354.     jbra    _B_KLE_D
  1355. @@:    move.b    _DisSuuzi1,_DisSuuzi10
  1356.     move.b    d7,_DisSuuzi1
  1357.     jbra    _B_KLE_K
  1358.  
  1359.  
  1360. TsuzP:        ******[+]
  1361.     jbsr    _CdcModeOn
  1362.     jbsr    _ChkCdRom
  1363.     tst.w    _CDIN                *0:CDは入っていない 1:入っている
  1364.     bne    @f
  1365.     jbra    _B_KLE_D
  1366. @@:
  1367.  
  1368. .if 0
  1369.  
  1370.     jbsr    _DisSuuziCalc
  1371.     tst.l    d0
  1372.     bne    @f
  1373.         *演奏ナンバー
  1374.     moveq    #0,d0
  1375.     move.w    _TrkNo,d0        *演奏していない時は0なので問題無し
  1376. @@:
  1377.     addq.l    #1,d0
  1378.     cmp.l    _CdTrak(pc),d0
  1379.     jbls    @f                *d1<=d0max
  1380.     moveq    #1,d0
  1381. @@:    divu    #10,d0
  1382.     move.b    d0,_DisSuuzi10
  1383.     swap    d0
  1384.     move.b    d0,_DisSuuzi1
  1385.     jbra    _B_KLE_K
  1386.  
  1387. .else
  1388.  
  1389.     move.l    _Ledtrk,d0
  1390.     addq.l    #1,d0
  1391.     cmp.l    _CdTrak(pc),d0
  1392.     jbls    @f                *d1<=d0max
  1393.     moveq    #1,d0
  1394. @@:    divu    #10,d0
  1395.     move.b    d0,_DisSuuzi10
  1396.     swap    d0
  1397.     move.b    d0,_DisSuuzi1
  1398.     jbra    _B_KLE_K
  1399.  
  1400. .endif
  1401.  
  1402. TsuzM:        ******[-]
  1403.     jbsr    _CdcModeOn
  1404.     jbsr    _ChkCdRom
  1405.     tst.w    _CDIN                *0:CDは入っていない 1:入っている
  1406.     bne    @f
  1407.     jbra    _B_KLE_D
  1408. @@:
  1409.  
  1410. .if 0
  1411.  
  1412.     jbsr    _DisSuuziCalc
  1413.     tst.l    d0
  1414.     bne    @f
  1415.         *演奏ナンバー
  1416.     moveq    #0,d0
  1417.     move.w    _TrkNo,d0        *演奏していない時は0なので問題無し
  1418. @@:
  1419.     subq.l    #1,d0
  1420.     cmpi.l    #1,d0
  1421.     jbge    @f                *d1>=1
  1422.     move.l    _CdTrak(pc),d0
  1423.     bra    1f
  1424. @@:
  1425.     cmp.l    _CdTrak(pc),d0
  1426.     jbls    1f                *d1<=d0max
  1427.     move.l    _CdTrak(pc),d0
  1428. 1:
  1429.     divu    #10,d0
  1430.     move.b    d0,_DisSuuzi10
  1431.     swap    d0
  1432.     move.b    d0,_DisSuuzi1
  1433.     jbra    _B_KLE_K
  1434.  
  1435. .else
  1436.  
  1437.     move.l    _Ledtrk,d0
  1438.     subq.l    #1,d0
  1439.     cmpi.l    #1,d0
  1440.     jbge    @f                *d1>=1
  1441.     move.l    _CdTrak(pc),d0
  1442.     bra    1f
  1443. @@:
  1444.     cmp.l    _CdTrak(pc),d0
  1445.     jbls    1f                *d1<=d0max
  1446.     move.l    _CdTrak(pc),d0
  1447. 1:
  1448.     divu    #10,d0
  1449.     move.b    d0,_DisSuuzi10
  1450.     swap    d0
  1451.     move.b    d0,_DisSuuzi1
  1452.     jbra    _B_KLE_K
  1453.  
  1454. .endif
  1455.  
  1456.  
  1457. Te:    ******    [E]
  1458.     tst.w    _CddevSw
  1459.     beq    @f
  1460.         **計測用
  1461.     move.w    _CddDrvNo,d0
  1462.     ori.w    #$300,d0
  1463.     move.w    d0,-(sp)
  1464.     DOS__    _DRVCTRL
  1465.     addq.l    #2,sp
  1466.     move.w    _CddDrvNo,d0
  1467.     ori.w    #$100,d0
  1468.     move.w    d0,-(sp)
  1469.     DOS__    _DRVCTRL
  1470.     addq.l    #2,sp
  1471.     bra    1f
  1472. @@:        **SCSI2用
  1473.     jbsr    _CdEje
  1474. 1:
  1475.  
  1476.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  1477.     clr.w    _TrkNo
  1478.     clr.w    _TrkNoS
  1479.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  1480.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1481.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  1482.     move.w    #-1,_MemPt
  1483.     move.w    #-1,_RndPt
  1484.     clr.w    _DisSuuzi10            * LED用数字クリア
  1485.     jbsr    _EJE_EMU
  1486.     jbsr    _WaitCC_100
  1487.  
  1488.     jbsr    _ChkCdRom
  1489.     jbra    _B_KLE_D
  1490.  
  1491.  
  1492. Tr:    ******    [R]
  1493.     jbsr    _CdReload
  1494.     jbsr    _ChkCdRom
  1495.     jbra    _B_KLE_D
  1496.  
  1497.  
  1498. TF1:    ******    [F1]
  1499.     moveq    #0,d0
  1500.     bra    Tfunction
  1501. TF2:    ******    [F2]
  1502.     moveq    #1,d0
  1503.     bra    Tfunction
  1504. TF3:    ******    [F3]
  1505.     moveq    #2,d0
  1506.     bra    Tfunction
  1507. TF4:    ******    [F4]
  1508.     moveq    #3,d0
  1509.     bra    Tfunction
  1510. TF5:    ******    [F5]
  1511.     moveq    #4,d0
  1512.     bra    Tfunction
  1513. TF6:    ******    [F6]
  1514.     moveq    #5,d0
  1515.     bra    Tfunction
  1516. TF7:    ******    [F7]
  1517.     moveq    #6,d0
  1518.     bra    Tfunction
  1519. TF8:    ******    [F8]
  1520.     moveq    #7,d0
  1521.     bra    Tfunction
  1522. TF9:    ******    [F9]
  1523.     moveq    #8,d0
  1524.     bra    Tfunction
  1525. Tfunction:
  1526.     jbsr    _CdcModeOn
  1527.     tst.w    _JukeBox            *0:ノーマル 1:JukeBox
  1528.     beq    1f
  1529.     clr.w    _JukeBox            *0:ノーマル 1:JukeBox
  1530.     bra    @f
  1531. 1:
  1532.     cmp.w    _SCSI_LUN__,d0
  1533.     bne    @f
  1534.     jbra    _B_KLE_D
  1535. @@:
  1536.     move.l    d0,-(sp)
  1537.     *jbsr    _StpDsk
  1538.     jbsr    _ZeroUnit
  1539.     move.l    (sp)+,d0
  1540.     jbsr    _SetLUN                *LUN変更 d0=LUN
  1541.     *jbsr    _ejeload            *トレイを出して直ぐ戻す。MBR-7ならいいが・・・
  1542.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  1543.     clr.w    _TrkNo
  1544.     clr.w    _TrkNoS
  1545.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  1546.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1547.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  1548.     move.w    #-1,_MemPt
  1549.     move.w    #-1,_RndPt
  1550.     clr.w    _DisSuuzi10            * LED用数字クリア
  1551.     jbsr    _EJE_EMU
  1552.     jbsr    _WaitCC_100
  1553.     jbra    _B_KLE_D
  1554.  
  1555. TF10:    ******    [F10]
  1556.     move.w    #1,_JukeBox            *0:ノーマル 1:JukeBox
  1557.     jbsr    _CdcModeOn
  1558.     jbsr    _ChkCdRom
  1559.     jbsr    _B_KLE_LD
  1560.     jbsr    _ZeroUnit
  1561.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  1562.     clr.w    _TrkNo
  1563.     clr.w    _TrkNoS
  1564.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  1565.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1566.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  1567.     move.w    #-1,_MemPt
  1568.     move.w    #-1,_RndPt
  1569.     clr.w    _DisSuuzi10            * LED用数字クリア
  1570.     jbsr    _CdListRead
  1571.     jbra    _B_KLE_D
  1572.  
  1573. .if 1
  1574. Tbankid:
  1575.     *****  [ex] Bank ID
  1576.     move.w    _SCSI_BANKID,d0
  1577.     jbmi    _B_KLE_D            * 指定ないので無視
  1578.     jbsr    _ZeroUnit
  1579.     move.w    _SCSI_BANKID,d0
  1580.     move.w    _SCSI_ID+2,_SCSI_BANKID
  1581.     move.w    d0,_SCSI_ID+2            * ID
  1582.     move.w    d0,_SCSI_IDF+2            * ID
  1583.     eori.w    #$FF,_SCSI_IDSW
  1584.     movem.l    d0-d2/a0-a2,-(sp)
  1585.     jbsr    _DEVICE_chk
  1586.     movem.l    (sp)+,d0-d2/a0-a2
  1587.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  1588.     clr.w    _TrkNo
  1589.     clr.w    _TrkNoS
  1590.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  1591.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  1592.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  1593.     move.w    #-1,_MemPt
  1594.     move.w    #-1,_RndPt
  1595.     clr.w    _DisSuuzi10            * LED用数字クリア
  1596.     jbsr    _EJE_EMU
  1597.     jbsr    _WaitCC_100
  1598.     jbra    _B_KLE_D
  1599. .endif
  1600.  
  1601. _DisSuuziCalc:
  1602.     **********************
  1603.     *
  1604.     *リターン    d0=入力されてる数値
  1605.     *
  1606.     moveq    #0,d0
  1607.     move.b    _DisSuuzi10,d0
  1608.     move.w    d0,d1
  1609.     lsl.w    #3,d0
  1610.     add.w    d1,d0
  1611.     add.w    d1,d0    * x10
  1612.     moveq    #0,d1
  1613.     move.b    _DisSuuzi1,d1
  1614.     add.w    d1,d0
  1615.     rts
  1616.  
  1617.  
  1618. Waiting:*-----------------------------
  1619.     *    タイミング    1秒待ち
  1620.     *
  1621.     *//[引数]   d1.w=前のタイム($09CC.w)
  1622.     *[戻り値] bcs まだ
  1623.     *      bcc キー入力
  1624.     *
  1625.     move.w    _PlyTD(pc),d1
  1626.     beq    Wait_L1
  1627.         ***演奏開始直後
  1628.     move.w    _KeyTD(pc),d1            *前の1/100s
  1629.     sub.w    $09CC.w,d1            *今の1/100s
  1630.     jbeq    Wait_L2
  1631.     jbcc    @f
  1632.     add.w    #6000,d1
  1633. @@:    cmp.w    _PlyTD(pc),d1            *1秒見る
  1634.     bcc    @f
  1635.     rts
  1636. @@:    clr.w    _PlyTD
  1637.     rts
  1638. Wait_L1:    ***ノーマル
  1639.     move.w    _KeyTD(pc),d1            *前の1/100s
  1640.     sub.w    $09CC.w,d1            *今の1/100s
  1641.     jbeq    Wait_L2
  1642.     jbcc    @f
  1643.     add.w    #6000,d1
  1644. @@:    tst.w    _TrkNo
  1645.     jbeq    @f
  1646.         **演奏中
  1647.     cmp.w    _KeyTDCT(pc),d1            *1秒見る
  1648.     rts
  1649. @@:        **停止中
  1650.     cmp.w    _NoPlWitT(pc),d1        *1秒見る
  1651.     rts
  1652. Wait_L2:    **?? TIMER-C が動いていない
  1653.     moveq    #10,d1
  1654.     subq.l    #1,_TnLC
  1655.     cmp.l    _TnLC(pc),d1    *
  1656.     rts
  1657.  
  1658.  
  1659. _WaitCC:*-----------------------------
  1660.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1661.     move.l    #TnLC_,_TnLC            *今のカウント
  1662.     rts
  1663. _WaitCC2:*-----------------------------[演奏用間隔]
  1664.     move.w    _PlyWitT(pc),_PlyTD
  1665.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1666.     move.l    #TnLC_,_TnLC            *今のカウント
  1667.     rts
  1668. _WaitCC_100:*-----------------------------[1秒間隔]
  1669.     move.w    #100,_PlyTD
  1670.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1671.     move.l    #TnLC_,_TnLC            *今のカウント
  1672.     rts
  1673. _WaitCC_200:*-----------------------------[2秒間隔]
  1674.     move.w    #200,_PlyTD
  1675.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1676.     move.l    #TnLC_,_TnLC            *今のカウント
  1677.     rts
  1678. _WaitCC_300:*-----------------------------[3秒間隔]
  1679.     move.w    #300,_PlyTD
  1680.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1681.     move.l    #TnLC_,_TnLC            *今のカウント
  1682.     rts
  1683.  
  1684.  
  1685. LoopChkSub:*--------------------------------
  1686.     movem.l    d0-d2/a0-a2,-(sp)
  1687.     jbsr    FnkBerChk
  1688.     jbeq    @f
  1689.     jbsr    DrawLeds
  1690. @@:    movem.l    (sp)+,d0-d2/a0-a2
  1691.     rts
  1692.  
  1693.  
  1694. LoopChk:*---------------------------
  1695.     *
  1696.     *    危険な割り込み
  1697.     *        壊れるレジスタ無し
  1698.     *
  1699.  
  1700.     tst.w    _CdcMode
  1701.     jbne    @f
  1702.     rts
  1703. @@:
  1704.     move.l    d1,-(sp)
  1705.     jbsr    Waiting
  1706.     movem.l    (sp)+,d1            *ccr壊さないように
  1707.     jbcc    @f
  1708.     rts
  1709. @@:
  1710.     jbsr    LoopChkSub
  1711. LoopChk_:
  1712.     ****SCSI CHK
  1713.     jbsr    ScsiUseChk
  1714.     jbeq    @f                *つかえる
  1715.     rts
  1716. @@:
  1717.     move.w    $09CC.w,_KeyTD            *今の1/100s
  1718.     move.l    #TnLC_,_TnLC            *今のカウント
  1719.  
  1720.     movem.l    d0-d7/a0-a6,-(sp)
  1721.  
  1722.     jbsr    _ChkCdRom
  1723.  
  1724.     move.w    _PauseMode(pc),d1        *0:特に 1:ポーズ中
  1725.     jbeq    @f
  1726.     jbsr    _B_KLE_D2
  1727.     jbra    TCE
  1728. @@:
  1729.     move.w    _BgmMode(pc),d1 *tst
  1730.     jbeq    @f
  1731.     jbsr    _CdPlay_Bgm
  1732.     jbra    TCE
  1733. @@:
  1734.     move.w    _ReptMode(pc),d1 *tst
  1735.     jbeq    @f
  1736.     jbsr    _CdPlay_Rept
  1737.     jbra    TCE
  1738. @@:
  1739.     move.w    _RndMode(pc),d1 *tst
  1740.     jbeq    @f
  1741.     jbsr    _CdPlay_Rnd
  1742.     jbra    TCE
  1743. @@:
  1744.     move.w    _MemMode(pc),d1 *tst
  1745.     jbeq    @f
  1746.     jbsr    _CdPlay_Mem
  1747.     jbra    TCE
  1748. @@:
  1749.     move.w    _AutoMode(pc),d1 *tst
  1750.     jbeq    @f
  1751.     jbsr    _CdPlay_Auto
  1752.     jbra    TCE
  1753. @@:
  1754.     jbsr    _CdPlay___
  1755.  
  1756. TCE:    movem.l    (sp)+,d0-d7/a0-a6
  1757.     rts
  1758.  
  1759.  
  1760. ScsiUseChk:*-------------------------------
  1761.     *
  1762.     *    jbeq    :使える
  1763.     *    jbne    :つかえない
  1764.     *
  1765.     movem.l    d0/d1/d4/a1,-(sp)
  1766.  
  1767.     .ifdef SCSI_USECHK_MODE1
  1768.         move.w    SUC,d1
  1769.         jbne    SUC_NE
  1770.         jbsr    PHASE_DISP
  1771.         andi.b    #$07,d0
  1772.         jbne    SUC_NE2
  1773.  
  1774.     .else
  1775.         move.l    _SCSI_ROMB(pc),a1
  1776.         move.b    $D(a1),d1
  1777.         andi.b    #$F0,d1
  1778.         jbne    SUC_NE
  1779.         move.b    $B(a1),d1
  1780.         andi.b    #$07,d1
  1781.         jbne    SUC_NE
  1782.     .endif
  1783.  
  1784.     lea    $E84040,a1            *DMAC #1
  1785.     btst.b    #3,(a1)
  1786.     jbne    SUC_NE
  1787.     *lea    $E84080,a1            *DMAC #2
  1788.     *btst.b    #3,(a1)
  1789.     *bne    SUC_NE
  1790.  
  1791.     moveq    #0,d1
  1792.     movem.l    (sp)+,d0/d1/d4/a1
  1793.     rts
  1794. SUC_NE:        *====使えない
  1795.     *なぜ使えないかチェック
  1796.     jbsr    PHASE_DISP
  1797.     andi.b    #$07,d0
  1798. SUC_NE2:
  1799.     cmpi.b    #$03,d0
  1800.     bne    @f
  1801.     bsr    _scsi_cmd_chk
  1802. @@:
  1803.     moveq    #-1,d1
  1804.     movem.l    (sp)+,d0/d1/d4/a1
  1805.     rts
  1806.  
  1807.  
  1808. PHASE_DISP:
  1809.     *------------------------
  1810.     *    PHASE 実行
  1811.     *    d1も破壊
  1812.     *[out] SCSI PHASE の戻り値
  1813.     *
  1814.     move.l    _TwsFlg,d0
  1815.     cmpi.l    #-2,d0
  1816.     beq    @f
  1817.  
  1818.     moveq    #_S_PHASE,d1
  1819.     jbra    SCALL_JMP
  1820. @@:
  1821.     move.l    d4,-(sp)
  1822.     move.l    _SCSI_IDF(pc),d4
  1823.     move.l    #$200+_S_PHASE,d1        *TWOSCSIコール
  1824.     jbsr    SCALL_JMP
  1825.     move.l    (sp)+,d4
  1826.     rts
  1827.  
  1828. _CdListRead:*------------------------------------------------------
  1829.     *
  1830.     *    out ; d0 =  0  CDがあってタイトルリストにもあった。
  1831.     *         != 0  それ以外
  1832.     *
  1833.     *------------------------------------------------------------
  1834.     tst.w    _JukeBox
  1835.     jbne    _CLR_Juke
  1836.     *=====
  1837.     move.b    #1,DosSwc
  1838.     *======ファイル関係をさわるので BREAK KILL
  1839.     move.w    #-1,-(sp)
  1840.     DOS    _BREAKCK
  1841.     addq.l    #2,sp
  1842.     move.w    d0,_CdLRBC
  1843.     move.w    #2,-(sp)
  1844.     DOS    _BREAKCK
  1845.     addq.l    #2,sp
  1846.     *======CDメディアの情報をゲット
  1847.     jbsr    _CdListSub
  1848.     tst.l    d0
  1849.     jbpl    @f
  1850.     *======CDメディアが入っていない
  1851.     clr.b    CDCLIST_FILENAME        *リストファイル無し
  1852.     jbra    _CdLRER
  1853. @@:    *======CDメディアがあった
  1854.     *======環境変数 CDCLIST をチェック
  1855.     pea    CDCLIST_FILENAME(pc)
  1856.     clr.l    -(sp)
  1857.     pea    CDCLIST_NAME(pc)
  1858.     DOS    _GETENV
  1859.     lea    12(sp),sp
  1860.     tst.l    d0
  1861.     jbpl    @f
  1862.     *======環境変数 CDCLIST がないので、リストファイル無し
  1863.     clr.b    CDCLIST_FILENAME
  1864.     jbra    _CdLRER
  1865. @@:    *======リストファイルオープン
  1866.     move.w    #0,-(sp)
  1867.     pea    CDCLIST_FILENAME(pc)
  1868.     DOS__    _OPEN
  1869.     addq.l    #6,sp
  1870.     tst.l    d0
  1871.     jbmi    _CdLRER    *エラー
  1872.     jbsr    _FgetsInit            *READ SUB 初期化
  1873.     *======リストファイル読み込み
  1874.     move.w    d0,Hendl
  1875.     move.l    d0,-(sp)
  1876.      bsr    _CdListDisp
  1877.     addq.l    #4,sp
  1878.     clr.l    _SetNameAdd
  1879.     move.l    d0,d1
  1880.     jbpl    @f
  1881.     *======リストファイルにはなかった。
  1882.     move.w    Hendl(pc),-(sp)
  1883.     DOS__    _CLOSE
  1884.     addq.l    #2,sp
  1885.     *jbsr    _CdNameClr    *念のため初期化
  1886.     jbra    _CdLRER
  1887. @@:    *======リストファイルにあった。
  1888.     move.w    Hendl(pc),-(sp)
  1889.     DOS__    _CLOSE
  1890.     addq.l    #2,sp
  1891.     *======BREAK モードを戻す
  1892.     move.w    _CdLRBC(pc),-(sp)
  1893.     DOS    _BREAKCK
  1894.     addq.l    #2,sp
  1895.     move.w    #1,_CDIN
  1896.     clr.b    DosSwc
  1897.     moveq    #0,d0        *正常
  1898.     rts
  1899. _CdLRER:*======エラーなど
  1900.     jbsr    _NoTtlFile
  1901.     *======BREAK モードを戻す
  1902.     move.w    _CdLRBC(pc),-(sp)
  1903.     DOS    _BREAKCK
  1904.     addq.l    #2,sp
  1905.     move.w    #1,_CDIN
  1906.     clr.b    DosSwc
  1907.     moveq    #-1,d0
  1908.     rts
  1909. _CLR_Juke::
  1910.     *----------------------------------
  1911.     *    JukeBox モードの時。
  1912.     *----------------------------------
  1913.     move.b    #1,DosSwc
  1914.     *======ファイル関係をさわるので BREAK KILL
  1915.     move.w    #-1,-(sp)
  1916.     DOS    _BREAKCK
  1917.     addq.l    #2,sp
  1918.     move.w    d0,_CdLRBC
  1919.     move.w    #2,-(sp)
  1920.     DOS    _BREAKCK
  1921.     addq.l    #2,sp
  1922.     *======環境変数 CDCLIST をチェック
  1923.     pea    CDCLIST_FILENAME(pc)
  1924.     clr.l    -(sp)
  1925.     pea    CDCLIST_NAME(pc)
  1926.     DOS    _GETENV
  1927.     lea    12(sp),sp
  1928.     tst.l    d0
  1929.     jbmi    @f
  1930.     *======リストファイルオープン
  1931.     move.w    #0,-(sp)
  1932.     pea    CDCLIST_FILENAME(pc)
  1933.     DOS__    _OPEN
  1934.     addq.l    #6,sp
  1935.     tst.l    d0
  1936.     jbmi    @f    *エラー
  1937.     jbsr    _FgetsInit            *READ SUB 初期化
  1938.     jbra    1f
  1939. @@:    *======リストファイル無し
  1940.     clr.b    CDCLIST_FILENAME
  1941.     moveq    #0,d0
  1942. 1:    *======CD&リストファイル読み込み
  1943.     move.w    d0,Hendl
  1944.     move.l    d0,-(sp)
  1945.      bsr    _CdListDispMC
  1946.     addq.l    #4,sp
  1947.     clr.l    _SetNameAdd
  1948.     *======オープンしたファイルを閉じる
  1949.     move.w    Hendl(pc),d0
  1950.     beq    @f
  1951.     move.w    d0,-(sp)
  1952.     DOS__    _CLOSE
  1953.     addq.l    #2,sp
  1954. @@:    *======BREAK モードを戻す
  1955.     move.w    _CdLRBC(pc),-(sp)
  1956.     DOS    _BREAKCK
  1957.     addq.l    #2,sp
  1958.     move.w    #1,_CDIN
  1959.     clr.b    DosSwc
  1960.     moveq    #0,d0        *正常
  1961.     rts
  1962.  
  1963. _CdLRBC:
  1964.     .dc.w    0
  1965.  
  1966.     *------------------------------------------
  1967.  
  1968.     .include CDRD.s
  1969.     .include CDRC_.s
  1970.     .include CDRT.s
  1971.  
  1972.  
  1973. _SetLUN_:
  1974.     move.l    4(sp),d0
  1975.     *jbra    _SetLUN
  1976. _SetLUN:*----------------------------------
  1977.     *
  1978.     *    d0=LUN
  1979.     *        d0は破壊
  1980.     *
  1981.     move.w    d0,_SCSI_LUN__            *LUN変更
  1982.     move.w    d0,_SCSI_IDF            *LUN変更
  1983.     ori.w    #$8000,_SCSI_IDF        *上位ビット立てておく
  1984.     lsl.w    #5,d0
  1985.     move.b    d0,_SCSI_LUN            *LUN変更
  1986.     movem.l    d0-d2/a0-a2,-(sp)
  1987.     jbsr    _DEVICE_chk
  1988.     movem.l    (sp)+,d0-d2/a0-a2
  1989.     rts
  1990.  
  1991.  
  1992.  
  1993. _ChkCdRom:*----------------------------------
  1994.     *
  1995.     *    なにやるもこれを一度コール
  1996.     *    以下_plyinfに引数がセットされる
  1997.     *
  1998.     jbsr    _WaitCC    *今の1/100s
  1999.     tst.w    _JukeBox
  2000.     jbeq    _ChkCdL1
  2001.     *======多連装
  2002.     bsr    ChkPly_S1
  2003.     tst.l    d0
  2004.     jbeq    1f            **OK!
  2005.     ** エラー、演奏停止
  2006.     move.l    #$13,_plyinf
  2007.     clr.w    _TrkNo
  2008.     clr.w    _TrkNoS
  2009.     *bra    _FlgClrS
  2010.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  2011.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  2012.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  2013.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  2014.     clr.w    _TrkNo
  2015.     clr.w    _TrkNoS
  2016.     move.w    #-1,_MemPt
  2017.     move.w    #-1,_RndPt
  2018.     rts
  2019. 1:
  2020.     move.l    _plyinf(pc),d0
  2021.     cmpi.b    #$11,d0
  2022.     jbeq    @f
  2023.     cmpi.b    #$12,d0
  2024.     jbeq    @f
  2025.     clr.w    _TrkNo
  2026. @@:    rts
  2027.  
  2028.     *====== 単装
  2029. _ChkCdL1:
  2030.  
  2031.     move.w    _CDIN(pc),d0            *0:CDは入っていない 1:入っている
  2032.     bne    1f
  2033.     *====== 
  2034.     movem.l    d1-d4,-(sp)
  2035.     move.l    _SCSI_IDF,d4
  2036.     SCSI__    _S_TESTUNIT
  2037.     *jbsr    SCALL_JMP
  2038.     movem.l    (sp)+,d1-d4
  2039.     tst.l    d0
  2040.     beq    1f
  2041.     cmpi.l    #1,d0
  2042.     beq    1f
  2043.     bra    ChkCR_NoCd            **エラー
  2044. 1:
  2045.     bsr    ChkPly_S1
  2046.     tst.l    d0
  2047.     jbne    ChkCR_NoCd            **エラー
  2048.  
  2049.     move.l    _plyinf(pc),d0
  2050.     cmpi.b    #$11,d0
  2051.     jbeq    @f
  2052.     cmpi.b    #$12,d0
  2053.     jbeq    @f
  2054.     clr.w    _TrkNo
  2055. @@:
  2056.     move.w    _CDIN(pc),d0            *0:CDは入っていない 1:入っている
  2057.     jbne    @f
  2058.     jbsr    _B_KLE_LD
  2059.     jbsr    _CdListRead
  2060.     rts
  2061. @@:
  2062.     rts
  2063.  
  2064. ChkCR_NoCd:
  2065.     tst.w    _KeySwi        *1;キー入力可能 0;不可能
  2066.     bne    @f
  2067.     rts
  2068. @@:
  2069.     move.w    _CDIN(pc),d0            *0:CDは入っていない 1:入っている
  2070.     bne    @f
  2071.     rts
  2072. @@:
  2073.     *** 前は入っていた・・・
  2074.     movem.l    d1-d2/a0-a2,-(sp)        * 一瞬のエラーはここで
  2075.     jbsr    _CDROM_chk            * 吸収出来る。
  2076.     movem.l    (sp)+,d1-d2/a0-a2
  2077.     tst.l    d0
  2078.     bne    @f
  2079.     rts
  2080. @@:
  2081.     *** CDは出された
  2082.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  2083.     clr.w    _LEDVMOD
  2084.     clr.w    _CdLong                *長さ
  2085.     clr.w    _CdTrak                *そのCDの曲数(拡張トラック対応)
  2086.     clr.w    _TrkNo
  2087.     clr.w    _TrkNoS
  2088.     clr.w    _DisSuuzi10            * LED用数字クリア
  2089.     clr.b    _CdName                *CD名
  2090.     clr.w    _ReptMode            *0:ノーマル 1:リピート
  2091.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  2092.     clr.w    _BgmMode            *0:ノーマル 1:BGM
  2093.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  2094.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  2095.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  2096.     move.w    #-1,_MemPt
  2097.     move.w    #-1,_RndPt
  2098.     rts
  2099.  
  2100. ChkCR_ChainCd:
  2101.     clr.w    _LEDVMOD
  2102.     clr.w    _DisSuuzi10            * LED用数字クリア
  2103.     jbsr    _B_KLE_LD
  2104.     jbsr    _CdListRead
  2105.     rts
  2106.  
  2107.  
  2108.  
  2109. ChkPly_S1:
  2110.     *-----------------------------
  2111.     *
  2112.     *    beq  OK
  2113.     *    bne  エラー
  2114.     *
  2115.     tst.w    _PLAYSCCAL        * 1;演奏中極力 SCSI コールをしない
  2116.     beq    @f
  2117.     tst.w    _PauseMode        * Pause 中?
  2118.     bne    @f
  2119.     tst.w    _TrkNo            * 演奏している?
  2120.     beq    @f
  2121.     bra    1f
  2122. @@:
  2123.     move.l    #-1,_cps_ot
  2124.  
  2125.     pea    _plyinf(pc)
  2126.     jbsr    _ChkPly
  2127.     addq.l    #4,sp
  2128.     tst.l    d0
  2129.     beq    @f
  2130.     pea    _plyinf(pc)
  2131.     jbsr    _ChkPly
  2132.     addq.l    #4,sp
  2133.     tst.l    d0
  2134.     beq    @f
  2135.     rts
  2136. @@:
  2137.     jbsr    _ChkPlyDisp
  2138.     moveq    #0,d0
  2139.     rts
  2140.  
  2141. 1:
  2142.     *------
  2143.     tst.l    _cps_ot
  2144.     bmi    CPS_L1
  2145.     *=========== 2度目以降
  2146.     *--------
  2147. *    move.w    _TrkNo,d0
  2148. *    cmp.w    _cps_trkno(pc),d0
  2149. *    bne    CPS_L1            * track が変わった
  2150.     move.l    _cps_track,d0
  2151. *    bmi    @f
  2152.     cmp.l    _plyinf+4,d0
  2153.     bne    CPS_L1            * track が変わった
  2154. @@:
  2155.     IOCS    _ONTIME
  2156.     sub.l    _cps_ot(pc),d0
  2157.     bpl    @f
  2158.     addi.l    #8640000,d0
  2159. @@:
  2160.     move.l    d0,-(sp)
  2161.     jbsr    _tim2msf
  2162.     addq.l    #4,sp
  2163.  
  2164.     move.l    d0,-(sp)
  2165.     move.l    _cps_adds(pc),-(sp)
  2166.     jbsr    _addtime_
  2167.     addq.l    #8,sp
  2168.  
  2169.     move.l    d0,_plyinf+12            * plyinf.adds
  2170.  
  2171.     cmp.l    _CdLong,d0
  2172.     bcc    CPS_L1
  2173.  
  2174. *    move.l    _plyinf+4,_cps_track
  2175.  
  2176.     jbsr    _ChkPlyDisp
  2177.  
  2178.     move.l    _cps_track,d0
  2179.     cmp.l    _plyinf+4,d0
  2180.     bne    CPS_L1            * track が変わった
  2181.  
  2182.     moveq    #0,d0
  2183.     rts
  2184.  
  2185. CPS_L1:
  2186.     *=========== はじめて
  2187.     move.l    #-1,_cps_ot
  2188.     *-------- まずは今の状態を記憶
  2189.     pea    _plyinf(pc)
  2190.     jbsr    _ChkPly
  2191.     addq.l    #4,sp
  2192.     tst.l    d0
  2193.     beq    @f
  2194.     pea    _plyinf(pc)
  2195.     jbsr    _ChkPly
  2196.     addq.l    #4,sp
  2197.     tst.l    d0
  2198.     beq    @f
  2199.     rts
  2200. @@:
  2201.     jbsr    _ChkPlyDisp
  2202.     move.l    _plyinf(pc),d0
  2203.     cmpi.b    #$11,d0
  2204.     beq    @f
  2205.     *------ 演奏していない
  2206.     moveq    #0,d0
  2207.     rts
  2208. @@:
  2209.     *move.l    #-1,_cps_track
  2210.     move.l    _plyinf+4,_cps_track
  2211.  
  2212.     move.w    _TrkNo,_cps_trkno        * plyinf.track_no
  2213.     move.l    _plyinf+12,_cps_adds        * plyinf.adds
  2214.     IOCS    _ONTIME
  2215.     move.l    d0,_cps_ot
  2216.     moveq    #0,d0
  2217.     rts
  2218.  
  2219.  
  2220. _cps_ot:
  2221.     .dc.l    -1        * 計測開始の ONTIME
  2222. _cps_adds:
  2223.     .dc.l    -1        * 計測開始の address
  2224. _cps_trkno:
  2225.     .dc.w    -1        * 計測開始の TraNo
  2226. _cps_track:
  2227.     .dc.l    -1        * 計測開始の track
  2228.  
  2229.  
  2230.  
  2231.  
  2232. _REQUEST_SENSE:
  2233.     *---------------------------------------
  2234.     *
  2235.     *    SCSIコマンドエラーをチェック&記憶
  2236.     *    ERREMU用バッファに確保
  2237.     *
  2238.     movem.l    d0/d1/d3/d4/a1,-(sp)
  2239.     move.l    _SCSI_IDF(pc),d4
  2240.     lea.l    _REQU_BUF(pc),a1
  2241.     moveq    #18,d3
  2242.     SCSI__    _S_REQUEST
  2243.     move.l    d0,_REQU_D0_BUF
  2244.     move.b    2(a1),_REQU_PTR_KEY
  2245.     move.b    12(a1),_REQU_PTR_ASC
  2246.     move.b    13(a1),_REQU_PTR_ASCQ
  2247.     move.b    2(a1),d0
  2248.     andi.b    #$0F,d0
  2249.     beq    _RESE_L1            *0なら終了
  2250.     cmpi.b    #6,d0                *unit attentionなら絶対ERRエミュ
  2251.     beq    @f
  2252.     tst.w    _REQU_PTR
  2253.     bne    _RESE_L1            *既にERREMUが用意してあるなら終了
  2254. @@:
  2255.     move.w    #-1,_REQU_CHK
  2256.     move.l    (a1),_REQU_PTR            *
  2257.     move.l    4(a1),_REQU_PTR+4        *
  2258.     move.l    8(a1),_REQU_PTR+8        *    18byte copy
  2259.     move.l    12(a1),_REQU_PTR+12        *
  2260.     move.w    16(a1),_REQU_PTR+16        *
  2261.     move.l    _REQU_D0_BUF(pc),_REQU_D0
  2262. _RESE_L1:
  2263.     movem.l    (sp)+,d0/d1/d3/d4/a1
  2264.     rts
  2265.  
  2266.  
  2267. _EJE_EMU:*---------------------------------------
  2268.     *
  2269.     *    エジェクトエミュする
  2270.     *
  2271.     move.l    #$70_00_06_00,_REQU_PTR        *
  2272. @@:    move.l    #$00_00_00_00,_REQU_PTR+4    *
  2273.     move.l    #$00_00_00_00,_REQU_PTR+8    *    18byte copy
  2274.     move.l    #$00_00_00_00,_REQU_PTR+12    *
  2275.     move.w    #$00_00_00_00,_REQU_PTR+16    *
  2276.     clr.l    _REQU_D0
  2277.     move.w    #-1,_REQU_CHK
  2278.     rts
  2279. _EJE_EMU2:*---------------------------------------
  2280.     move.l    #$70_00_02_00,_REQU_PTR        *    イジェクト状態
  2281.     bra    @b
  2282.  
  2283.  
  2284. _CdEje:    *---------------------------------------
  2285.     *
  2286.     *    エジェクト
  2287.     *
  2288.     movem.l    d3/d4,-(sp)
  2289.     move.l    _SCSI_IDF(pc),d4
  2290.     moveq    #$00,d3
  2291.     SCSI__    _S_PAMEDIUM
  2292.     cmpi.l  #2,d0
  2293.     bne    @f
  2294.     jbsr    _REQUEST_SENSE
  2295. @@:
  2296.     tst.w    _SWPD                * /pdがある?
  2297.     beq    1f
  2298.         **PD用
  2299.     move.l    #$8000_0000,d4            *PD-DRIVE対策 LUN消し
  2300.     move.w    _SCSI_ID+2(pc),d4
  2301.     moveq    #$00,d3
  2302.     SCSI__    _S_PAMEDIUM
  2303.     cmpi.l  #2,d0
  2304.     bne    @f
  2305.     jbsr    _REQUEST_SENSE
  2306. @@:
  2307. 1:    tst.w    _CDIN                *0:CDは入っていない 1:入っている
  2308.     beq    @f                *
  2309.     move.l    _SCSI_IDF(pc),d4
  2310. @@:    *moveq    #$02,d3                *EJECT
  2311.     *SCSI__    _S_STARTSTOP
  2312.     move.l    #2,-(sp)
  2313.     jbsr    _scsi_startstop
  2314.     addq.l    #4,sp
  2315.     cmpi.l  #2,d0
  2316.     bne    @f
  2317.     jbsr    _REQUEST_SENSE
  2318. @@:
  2319.     movem.l    (sp)+,d3/d4
  2320.  
  2321.     movem.l    d0-d7/a0-a6,-(sp)
  2322.     bsr    _ChkCdRom
  2323.     movem.l    (sp)+,d0-d7/a0-a6
  2324.  
  2325.     rts
  2326.  
  2327.  
  2328. _CdReload:*---------------------------------------
  2329.     *
  2330.     *    リロード
  2331.     *        ☆)多連装対策に全てのLUNに対してリロード?!
  2332.     *
  2333.     tst.w    _LUN_MAX
  2334.     bne    1f
  2335.     movem.l    d3/d4,-(sp)
  2336.     move.l    _SCSI_IDF(pc),d4
  2337.     moveq    #$00,d3
  2338.     SCSI__    _S_PAMEDIUM
  2339.     cmpi.l  #2,d0
  2340.     bne    @f
  2341.     jbsr    _REQUEST_SENSE
  2342. @@:    *moveq    #$03,d3
  2343.     *SCSI__    _S_STARTSTOP
  2344.     move.l    #3,-(sp)
  2345.     jbsr    _scsi_startstop
  2346.     addq.l    #4,sp
  2347.     cmpi.l  #2,d0
  2348.     bne    @f
  2349.     jbsr    _REQUEST_SENSE
  2350. @@:    movem.l    (sp)+,d3/d4
  2351.     rts
  2352. 1:
  2353.     movem.l    d3/d4/d6/d7,-(sp)
  2354.     move.l    _SCSI_IDF,-(sp)
  2355.     move.b    _SCSI_LUN,-(sp)
  2356.     move.w    _LUN_MAX,d7
  2357.     subq.w    #1,d7
  2358.     move.w    #$8000,_SCSI_IDF    * 最上位bitを立てておく
  2359.     clr.b    _SCSI_LUN
  2360. 9:
  2361.     move.l    _SCSI_IDF(pc),d4
  2362.     moveq    #$00,d3
  2363.     SCSI__    _S_PAMEDIUM
  2364.     cmpi.l  #2,d0
  2365.     bne    @f
  2366.     jbsr    _REQUEST_SENSE
  2367. @@:    move.l    #3,-(sp)
  2368.     jbsr    _scsi_startstop
  2369.     addq.l    #4,sp
  2370.     cmpi.l  #2,d0
  2371.     bne    @f
  2372.     jbsr    _REQUEST_SENSE
  2373. @@:
  2374.     addq.w    #$0001,_SCSI_IDF
  2375.     addi.b    #$20,_SCSI_LUN
  2376.     dbra    d7,9b
  2377.     move.b    (sp)+,_SCSI_LUN
  2378.     move.l    (sp)+,_SCSI_IDF
  2379.     movem.l    (sp)+,d3/d4/d6/d7
  2380.     rts
  2381.  
  2382.  
  2383.     *RedTOC用----------------------------------------
  2384. _leadout_address_:
  2385.     .dc.l    0
  2386. _min_:    .dc.l    0
  2387. _max_:    .dc.l    0
  2388.  
  2389.  
  2390.  
  2391. _SetKeyTDCT:
  2392.     *********************************************
  2393.     *    演奏中の割り込み間隔値  設定
  2394.     *
  2395.     *    d0.l = 数値
  2396.     *
  2397.     *        1秒で16になるようにセット
  2398.     *
  2399.     movem.l    d0-d1,-(sp)
  2400.     move.w    d0,_KeyTDCT    *演奏中の割り込み間隔
  2401.     moveq    #FadeOutSpeed,d1
  2402.     mulu    d0,d1        *(FadeOutSpeed x 数値)
  2403.     divu    #100,d1        * FadeOutSpeed x 数値 / 100
  2404.     move.w    d1,_FadeoutDec    *フェードアウト中の減り値
  2405.     bne    @f
  2406.     move.w    #1,_FadeoutDec    * 0なら1にして置く
  2407. @@:
  2408.     movem.l    (sp)+,d0-d1
  2409.     rts
  2410.  
  2411.     *********************************************************
  2412.  
  2413.  
  2414.     .include CDRC__.s
  2415.     .include SCSIC.s
  2416.  
  2417.     .even
  2418.  
  2419. _SS_:
  2420.  
  2421.     *-------------------------
  2422.     *    タイミング関係
  2423.     *-------------------------
  2424. _KeyTD:
  2425.     .dc.w    0                *前の1/100s
  2426. _PlyTD:
  2427.     .dc.w    0                *Ply後の待ちタイム
  2428. _TnLC:
  2429.     .dc.l    $0000                *カウント
  2430. Hendl:
  2431.     .dc.l    0
  2432. _ScscUse:
  2433.     .dc.w    0                *0;つかっていない
  2434. _SeekNow:
  2435.     .dc.l    -1                *-1;non !=;シーク中
  2436. _SeekNowTk:
  2437.     .dc.w    0                *_SeekNow補佐 trakno
  2438. _SeekNowMd:
  2439.     .dc.w    0                *0;KEY 1;Trap で使用
  2440. _KeyPush:
  2441.     .dc.w    0                *なにかキーを押している?
  2442. _ScscChksw:
  2443.     .dc.w    0                *1;STSIN MSGIN の実行待ち
  2444.  
  2445.  
  2446.     ******************(commandでも使用するが自作すること)
  2447.  
  2448. _pListName:    .dc.l    _ListName
  2449. _pListLong:    .dc.l    _ListName+(DefTrkMax*40)
  2450. _pListStTm:    .dc.l    _ListName+(DefTrkMax*40)+(DefTrkMax*4)
  2451.  
  2452.     ******************(commandでも使用)
  2453.  
  2454. KeepLong:    .dc.l    (DefTrkMax*40)+(DefTrkMax*4)+(DefTrkMax*4)
  2455.  
  2456. __COM__:
  2457.  
  2458.     *-------------------------
  2459.     *    キー関係
  2460.     *-------------------------
  2461.     *| 0 0 0 0 OPT.2 OPT.1 CTRL SHIFT | XF3 XF2 XF1 0 0 0 0 0| 0 0 0 0 0 0 XF5 XF4 
  2462. _SFTK:
  2463.     .dc.l    1
  2464. _KeySwi:
  2465.     .dc.w    1                *1;キー入力可能 0;不可能
  2466. _CmdC_Mod:
  2467.     .dc.w    0                *CmdC_List /b[n]
  2468. CmdC_List:
  2469.     defccl
  2470. CmdC_ListD:
  2471.     defccl
  2472. KeyC_List:
  2473.     .dc.b    $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  2474.     .dc.b    $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  2475.     .dc.b    $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  2476.     .dc.b    $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  2477.     .dc.b    $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  2478.     .dc.b    $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
  2479.     .dc.b    $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F
  2480.     .dc.b    $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F
  2481.     .even
  2482.     *-------------------------
  2483.     *    LED関係
  2484.     *-------------------------
  2485. _LEDVMOD:
  2486.     .dc.w    0    *0;B_KLE_D,B_KLE_D
  2487.             *1;B_KLE_M,B_KLE_K
  2488. _CHARBUF:
  2489.     .dcb.b    40,0                *LEDに表示されている文字列
  2490. _LEDBUF:
  2491.     .dcb.b    10*16,$FF            *テキスト表示用のパターンバンク
  2492. _NAMEBUF:
  2493.     .dcb.b    40*16,$FF
  2494. _DRAWADDS:
  2495.     *.dc.l    $E40000+31*16*$80+2
  2496.     .dc.l    $E40000+29*16*$80+49
  2497. HanRomAdd:
  2498.     .dc.l    $00f3a800
  2499. _DisForce:
  2500.     .dc.w    0                *0;ノーマル 1;TEXTを使っていても表示させる!!
  2501. _DisMode:
  2502.     .dc.w    1                *0;非表示 1;表示 2;Small表示
  2503.  
  2504.     *-------------------------
  2505.     *    CD(MODE)管理関係
  2506.     *-------------------------
  2507. _CDIN:
  2508.     .dc.w    0                *0:CDは入っていない 1:入っている
  2509. _TrkNo:
  2510.     .dc.w    0                *演奏中 トラックナンバー 0;停止
  2511. _TrkNoS:
  2512.     .dc.w    0                *最後に演奏のトラックナンバー
  2513. _PauseMode:
  2514.     .dc.w    0                *0:特に 1:ポーズ中
  2515. _CdcMode:
  2516.     .dc.w    1                *0:停止中 1:運転中
  2517. _AutoMode:
  2518.     .dc.w    0                *0:ノーマル 1:オート
  2519. _RndMode:
  2520.     .dc.w    0                *0:ノーマル 1:ランダム
  2521. _ReptMode:
  2522.     .dc.w    0                *0:ノーマル 1:リピート
  2523. _BgmMode:
  2524.     .dc.w    0                *0:ノーマル 1:BGM
  2525. _BgmStAdds:
  2526.     .dc.l    0
  2527. _BgmEdAdds:
  2528.     .dc.l    0
  2529. _JukeBox:
  2530.     .dc.w    0                *0:ノーマル 1:JukeBox
  2531.  
  2532. _Fadeouting:
  2533.     .dc.w    0                *0:ノーマル 1:フェードアウト中
  2534. _FadeoutVol:
  2535.     .dc.w    0                *フェードアウト中のボリューム
  2536. _FadeoutDec:
  2537.     .dc.w    FadeOutSpeed            *フェードアウト中の減り値
  2538.  
  2539.     *-------------------------
  2540.     *    プログラム(RND)関係
  2541.     *-------------------------
  2542. _MemMode:
  2543.     .dc.w    0                *0:ノーマル 1:メモリー
  2544. _MemPt:
  2545.     .dc.w    -1                *メモリポインタ
  2546. _MemPtV:
  2547.     .dc.w    0                *確認表示用メモリポインタ
  2548.  
  2549.     .dc.w    PrgMax
  2550. _MemLong:
  2551.     .dc.w    0                *メモリながさ 0以外ならMEMORY
  2552. _MemSock:
  2553.     .dcb.b    PrgMax+16,0            *メモリ
  2554.     .even
  2555. _RndPt:
  2556.     .dc.w    -1                *ランダムポインタ
  2557. _RndLong:
  2558.     .dc.w    0                *ランダムテーブルながさ
  2559. _RndSock:
  2560.     .dcb.b    TrkMax,0            *ランダムテーブル
  2561.     .even
  2562.  
  2563.     *-------------------------
  2564.     *    SCSI直接関係
  2565.     *-------------------------
  2566. _SCSI_ROMB:
  2567.     .dc.l    0
  2568. _SCSI_IDF:
  2569.     .dc.l    $8000_0006            *LUNを上位wordに置いたもの(そのままd4へ)
  2570. _SCSI_ID:
  2571.     .dc.l    6
  2572. _SCSI_LUN:
  2573.     .dc.b    0                *lunを<<5したもの
  2574.     .even
  2575. _SCSI_LUN__:
  2576.     .dc.w    0                *lun控え
  2577.  
  2578. _SCSI_BANKID:
  2579.     .dc.w    -1                *切り換え ID
  2580. _SCSI_IDSW:
  2581.     .dc.w    0                * 0;通常 1;ID,切換てる
  2582.  
  2583. _CddevSw:
  2584.     .dc.w    0                *0: SCSI直接 1:計測IOCTRL
  2585. _CddDrvNo:
  2586.     .dc.w    0                *計測IOCTRL用ドライヴNO
  2587. _LUN_MAX:
  2588.     .dc.w    0
  2589. _SWPD:
  2590.     .dc.w    0        * /pdがある?
  2591. _TestunitSw:
  2592.     .dc.w    0        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  2593. _DiSwc:
  2594.     .dc.b    0        * /di[n] の nの値 1;割り込みを止める 0;止めない
  2595.     .even
  2596. _DeviType:
  2597.     .dc.w    0            * デバイス TYPE がはいる
  2598. _PLAYSCSTS:
  2599.     .dc.w    0            *0; 1;STSIN待ち 0;待たず
  2600. _PLAYSCCAL:
  2601.     .dc.w    0            *0; 1;演奏中極力 SCSI コールをしない
  2602. _TwsFlg:
  2603.     .dc.w    -1            * TWOSCSI フラグ -2 なら PHASE 気を付ける
  2604.  
  2605.     *-------------------------
  2606.     *    REQUEST関係
  2607.     *-------------------------
  2608. _REQU_CHK:
  2609.     .dc.w    0
  2610.  
  2611. _REQU_BUF:        *buffer
  2612.     *.dc.b    $70
  2613.     .ds.b    17+1
  2614.     .even
  2615. _REQU_D0_BUF:
  2616.     .dc.l    0
  2617.  
  2618. _REQU_PTR:
  2619.     *.dc.b    $70
  2620.     .ds.b    17+1
  2621.     .even
  2622. _REQU_D0:
  2623.     .dc.l    0
  2624.  
  2625. _REQU_PTR_KEY
  2626.     .dc.b    0
  2627. _REQU_PTR_ASC
  2628.     .dc.b    0
  2629. _REQU_PTR_ASCQ
  2630.     .dc.b    0
  2631.     .even
  2632.     *-------------------------
  2633.     *    内部ワーク関係
  2634.     *-------------------------
  2635. _OvTrak:
  2636.     .dc.w    0                *1;トラックが足りなかった
  2637. _ExTrak:
  2638.     .dc.w    0                *1;拡張トラックあり
  2639. _DtTrak:
  2640.     .dc.w    0                *1;データトラック有り,-1;データのみ
  2641. _CeTrak:
  2642.     .dc.w    0                *1;中間曲名あり
  2643. _MD_SeqSecTrak:
  2644.     .dc.w    0                *MD専用..-1;セパレートセクタトラック有り,0;なし
  2645. _MD_MonoTrak:
  2646.     .dc.w    0                *MD専用..-1;MONOトラックのみ,1;有り(禁止),0;なし
  2647. _MD_PlayOnly:
  2648.     .dc.w    0                *MD専用..0;録再MEDIA 1;再生専用MEDIA
  2649. _PlyWitT:
  2650.     .dc.w    100                *演奏開始後の待ち間隔
  2651. _KeyTDCT:
  2652.     .dc.w    100                *演奏中の割り込み間隔
  2653. _NoPlWitT
  2654.     .dc.w    100                *演奏中でない時の割り込み間隔
  2655. _STFLAG:
  2656.     .dc.w    SF                *常駐チェック用
  2657. IocsSwc:
  2658.     .dc.b    0
  2659. ScIocsSwc:
  2660.     .dc.b    0
  2661. DosSwc:
  2662.     .dc.b    0
  2663.     .even
  2664. _MuTmMod:
  2665.     .dc.w    0                *0:ノーマル 1:強引にキーベクタを書き替え
  2666. CDCLIST_NAME:
  2667.     .dc.b    'CDCLIST',0            *タイトルリストファイル用
  2668.     .even
  2669. CDCLIST_FILENAME:
  2670.     .ds.b    256
  2671.     .even
  2672.         *--- 計測専用ワーク
  2673. _CddevPauAdd:
  2674.     .dc.l    0
  2675. _CddevPlaEnd:
  2676.     .dc.l    0
  2677. _CddevPauseD:
  2678.     .dc.w    0
  2679.         *--- MD専用ワーク
  2680. _PlayingTimeMD:
  2681.     .dc.l    0
  2682.     *-------------------------------------
  2683.     * 
  2684.     *
  2685.     *-------------------------------------
  2686.     *-- 読み込み用
  2687. _O_CdTrak:    .dc.l    0    *そのCDの本当の曲数
  2688. _O_ListLong:    .dcb.l    100,0    *各トラックの本当のながさ時間
  2689. _O_ListStTm:    .dcb.l    100,0    *各トラックの本当のスタート時間    最上位ビットが立って入れば データトラック
  2690.  
  2691.     *-- 本当のTrkNoを CDC管理用Noに変換テーブル
  2692. _ListTrak:    .dcb.b    9*100,0    *
  2693.                 * 
  2694.                 *
  2695.     .even
  2696. _TitleTy:
  2697.     .ds.b    9
  2698.     .even
  2699.  
  2700.     *-------------------------------------
  2701.     *    内部ワーク関係(trapで返す)
  2702.     *-------------------------------------
  2703.     *----------列びを変えてはいけない
  2704.     *ChkPly用
  2705.     .dc.w    0    *CDIN ひかえ
  2706. _plyinf:
  2707.     .dc.l    0    *int    fg;            /* 状態 0x11 演奏中,0x12 演奏中断 */
  2708.     .dc.l    0    *int    track_no;        /* 曲番号 */
  2709.     .dc.l    0    *int    time;            /* 現在の演奏時間 */
  2710.     .dc.l    0    *int    address;        /* 演奏アドレス */
  2711.     .dc.l    0    *int    track_long;        /* 演奏中の曲のながさ*/
  2712.     .dc.l    0    * CD名アドレス
  2713. _SetNameAdd:
  2714.     .dc.l    0    * 曲名アドレス
  2715. _Ledtta:
  2716.     .dc.l    0    * LED文字アドレス
  2717. _Ledtrk:
  2718.     .dc.l    0    * LED数値 曲番号
  2719. _Ledprg:
  2720.     .dc.l    0    * LED数値 プログラムナンバー 0;非表示  -1:MAX= -2:INP=
  2721. _Ledtim:
  2722.     .dc.l    0    * LED数値 MSF型
  2723. _Ledflg:
  2724.     .dc.l    0    * LEDその他の状態
  2725. _DisSuuzi10:
  2726.     .dc.b    0    * LED用数字    10の位
  2727. _DisSuuzi1:
  2728.     .dc.b    0    * LED用数字
  2729. _LEDTMRV:
  2730.     .dc.w    0    *0;ノーマル 1;リバース  2;トータル  3;トータルリバース
  2731. _Volum:
  2732.     .dc.w    255    *現在のボリューム
  2733. _MastVol:
  2734.     .dc.w    0    *マスターボリューム
  2735.  
  2736.             **チェックのため、ここにある
  2737. _CdPlayEndAdds:
  2738.     .dc.l    0
  2739. _CdPlayEndTrak:
  2740.     .dc.l    0
  2741.  
  2742.     *----------列びを変えてはいけない
  2743.         .dc.w    0
  2744. _CdcTrak:    .dc.l    DefTrkMax    *CDCの最大記憶数
  2745. _CdTrak:    .dc.l    0        *そのCDの曲数(拡張トラック対応)
  2746. _CdLong:    .dc.l    0        *長さ
  2747. _CdListS:    .dc.l    0        *CDLISTにあるなら 1 
  2748. _CdName:    .dcb.b    40,0        *CD名
  2749. ES:****↑↑絶対常駐部
  2750. _ListName:    .dcb.b    40*TrkMax,0    *メモリ    40文字まで
  2751. _ListLong:    .dcb.l    TrkMax,0    *ながさ時間
  2752.                     *    最上位ビットが立って入れば 拡張曲名あり
  2753.                     *        v
  2754.                     *    (TSM0MMMM_MMMMMMMM_SSSSSSSS_FFFFFFFF)
  2755.                     *      ^ MD 用 BIT ; セパレート セクタ トラック
  2756.                     *       ^ MD 用 BIT ; MONO トラック
  2757.                     *
  2758. _ListStTm:    .dcb.l    TrkMax,0    *スタート時間
  2759.                     *    最上位ビットが立って入れば データトラック
  2760.                     *     v
  2761.                     *    (TS0KLLLL_MMMMMMMM_SSSSSSSS_FFFFFFFF)
  2762.                     *      ^ ^ロジカル有効フラグ
  2763.                     *      ^  ^^^^ ロジカル
  2764.                     *      ^ MD 用 BIT ; デジタル トラック
  2765.     .even
  2766.         *    ListLongに拡張曲名fgあれば
  2767.         *      _ListLongの後ろからチェック 0xFF0000+曲ナンバーがあるはず
  2768.         *      対応する_ListStTmにオフセット値がある
  2769.         *     あっても次のものをチェックすること
  2770.         *      決まった場合対応する(_ListName)+2から拡張曲名がある
  2771.         *
  2772.  
  2773. __COM__S:
  2774.  
  2775. EndSt:    .dc.l    _ListName+(DefTrkMax*40)+(DefTrkMax*4)+(DefTrkMax*4)
  2776.  
  2777. EndStatio:*******************常駐部
  2778.  
  2779.  
  2780. _fprintf_:******************(Cライク)
  2781.     link    a6,#0
  2782.     movem.l    d3-d7/a3-a5,-(sp)
  2783.     move.l    8(a6),d0
  2784.     move.w    d0,FILENO
  2785.     movea.l    12(a6),a4
  2786.     lea.l    16(a6),a5
  2787.  
  2788. prL1:    move.b    (a4)+,d1
  2789.     jbeq    pri_end
  2790.     cmpi.b    #'%',d1
  2791.     jbeq    pri_kazu
  2792.     andi.w    #$00FF,d1
  2793.     move.l    d1,-(sp)
  2794.     jbsr    DosFputc
  2795.     addq.l    #4,sp
  2796.     jbra    prL1
  2797.  
  2798. pri_kazu:
  2799.     move.l    (a5)+,d7    *数
  2800.     move.b    (a4)+,d1
  2801.     jbeq    pri_end
  2802.     cmpi.b    #'1',d1
  2803.     jbeq    pr_K1
  2804.     cmpi.b    #'2',d1
  2805.     jbeq    pr_K2
  2806.     cmpi.b    #'3',d1
  2807.     jbeq    pr_K3
  2808.     cmpi.b    #'4',d1
  2809.     jbeq    pr_K4
  2810.     andi.w    #$00FF,d1
  2811.     move.l    d1,-(sp)
  2812.     jbsr    DosFputc
  2813.     addq.l    #4,sp
  2814.     jbra    prL1
  2815.  
  2816. pr_K4:
  2817.     divu    #1000,d7
  2818.     move.l    d7,d1
  2819.     addi.b    #'0',d1
  2820.     andi.w    #$00FF,d1
  2821.     move.l    d1,-(sp)
  2822.     jbsr    DosFputc
  2823.     addq.l    #4,sp
  2824.     swap    d7
  2825.     andi.l    #$0000FFFF,d7
  2826. pr_K3:
  2827.     divu    #100,d7
  2828.     move.l    d7,d1
  2829.     addi.b    #'0',d1
  2830.     andi.w    #$00FF,d1
  2831.     move.l    d1,-(sp)
  2832.     jbsr    DosFputc
  2833.     addq.l    #4,sp
  2834.     swap    d7
  2835.     andi.l    #$0000FFFF,d7
  2836. pr_K2:
  2837.     *move.l    d7,d1
  2838.     divu    #10,d7
  2839.     addi.b    #'0',d7
  2840.     andi.w    #$00FF,d7
  2841.     move.l    d7,-(sp)
  2842.     jbsr    DosFputc
  2843.     addq.l    #4,sp
  2844.     swap    d7
  2845. pr_K1:
  2846.     addi.b    #'0',d7
  2847.     andi.w    #$00FF,d7
  2848.     move.l    d7,-(sp)
  2849.     jbsr    DosFputc
  2850.     addq.l    #4,sp
  2851.     jbra    prL1
  2852.  
  2853. pri_end:
  2854.     movem.l    (sp)+,d3-d7/a3-a5
  2855.     unlk    a6
  2856.     rts
  2857. FILENO:
  2858.     .dc.w    0
  2859. DosFputc:
  2860.     move.l    4(a7),d0
  2861.     move.w    FILENO(pc),-(sp)
  2862.     move.w    d0,-(sp)
  2863.     DOS__    _FPUTC
  2864.     addq.l    #4,sp
  2865.     rts
  2866.  
  2867.  
  2868. MarkerChk:*----------------------------------------
  2869.     *    a0 アドレス
  2870.     *
  2871.     *[戻り値] bne ちがう
  2872.     *      beq あっている
  2873.     jbsr    BusErChk
  2874.     bne    @f
  2875.     *cmpa.l    #$00FFF000,a0
  2876.     *jbcc    @f
  2877.     cmp.l    #HEAD1,(a0)
  2878.     bne    @f
  2879.     cmp.l    #HEAD2,4(a0)
  2880.     bne    @f
  2881.     cmpa.l    a0,a0        *z=1
  2882. @@:
  2883.     rts
  2884.  
  2885.  
  2886. InvChk:*-----------------------------------
  2887.     *    a0.l==なら非常駐
  2888.     *    a0.l!=なら常駐
  2889.     movea.l    (a0),a0                *一つ前のポインタ
  2890.     jbsr    BusErChk
  2891.     bne    IC1
  2892.     *cmpa.l    #$00FFF000,a0
  2893.     *jbcc    IC1
  2894.     cmp.l    #HEAD1,$0100+(head-SS)(a0)
  2895.     jbne    @f
  2896.     cmp.l    #HEAD2,$0104+(head-SS)(a0)
  2897.     jbne    @f
  2898.     adda.w    #$100,a0    **[SS]のポインタ
  2899.     rts
  2900. @@:                        **違う
  2901.     tst.l    (a0)                *一つ前のポインタ
  2902.     jbne    InvChk                *0でない(上へ)
  2903. IC1:    sub.l    a0,a0    *非常駐
  2904.     rts
  2905.  
  2906.  
  2907. AtoI2:*-------------------------------*
  2908.     move.b    (a2),d0
  2909.     jbeq    AtoI2E_
  2910.     cmpi.b    #' ',d0
  2911.     jbeq    AtoI2E_
  2912.     cmpi.b    #'$',d0
  2913.     jbeq    AtoI
  2914.     cmpi.b    #'0',d0
  2915.     jbcs    AtoI2E
  2916.     cmpi.b    #'9'+1,d0
  2917.     jbcs    AtoI
  2918. AtoI2E:
  2919.     moveq    #-2,d0
  2920.     rts
  2921. AtoI2E_:
  2922.     moveq    #-1,d0
  2923.     rts
  2924. AtoI:*----------------------------------------
  2925.     *    a2 アドレス
  2926.     *[戻り値] d0.l 数字
  2927.     moveq    #0,d0
  2928.     move.b    (a2),d2
  2929.     cmpi.b    #'$',d2
  2930.     jbeq    AtoHI
  2931. @@:    moveq    #0,d2
  2932.     move.b    (a2)+,d2
  2933.     subi.b    #'0',d2
  2934.     jbcs    AIr
  2935.     cmpi.b    #9,d2
  2936.     jbhi    AIr
  2937.     andi.l    #$0000FF,d2
  2938.     mulu    #10,d0
  2939.     add.l    d2,d0
  2940.     jbra    @b
  2941. AIr:    subq    #1,a2
  2942.     rts
  2943. AtoHI:
  2944.     *(Hex専用)
  2945.     move.b    (a2)+,d2    *$ skip
  2946. @@:    moveq    #0,d2
  2947.     move.b    (a2)+,d2
  2948.     subi.b    #'0',d2
  2949.     jbcs    AHIL1
  2950.     cmpi.b    #9,d2
  2951.     jbhi    AHIL1
  2952.     lsl.l    #4,d0        * x16
  2953.     add.l    d2,d0
  2954.     jbra    @b
  2955. AHIL1:
  2956.     ori.b    #$20,d2
  2957.     subi.b    #'a'-'0',d2
  2958.     jbcs    AHIL2
  2959.     cmpi.b    #5,d2
  2960.     jbhi    AHIL2
  2961.     lsl.l    #4,d0        * x16
  2962.     addi.l    #10,d0
  2963.     add.l    d2,d0
  2964.     jbra    @b
  2965. AHIL2:    subq    #1,a2
  2966.     rts
  2967.  
  2968.  
  2969. BusErChk:*------------------------------------
  2970.     *    バスエラーチェック    (SUPERバイザモードで使う)
  2971.     *            a0=アドレス
  2972.     *    beq おっけー
  2973.     *    bne バスエラー
  2974.     movem.l    d0/a0-a2,-(sp)
  2975.     bsr    BEC_L1
  2976.     tst.l    d0
  2977.     movem.l    (sp)+,d0/a0-a2
  2978.     rts
  2979. BEC_L1:
  2980.     movea.l    sp,a2
  2981.     movea.l    $0008.w,a1        *バスエラーベクタ記憶
  2982.     move.l    #BEC_BE,$0008.w        *バスエラーフック
  2983.     move.l    (a0),d0            *見てみる エラーなら _BE へ
  2984.     moveq    #$0,d0
  2985.     move.l    a1,$0008.w
  2986.     rts
  2987. BEC_BE:
  2988.     movea.l    a2,sp            *バスエラーが出た
  2989.     moveq    #$ff,d0
  2990.     move.l    a1,$0008.w
  2991.     rts
  2992.  
  2993.  
  2994.     *---------------------------------------------------------------
  2995.  
  2996. SF    equ $FC
  2997. SFT5    equ $1
  2998. SFPW    equ $2
  2999.  
  3000. SPP:    .dc.l    0
  3001.  
  3002. init:*------------------------------------------------------------------
  3003.     lea    usrsp(pc),sp
  3004.     move.l    a0,MEMP
  3005.     Print    LR1(pc)
  3006.     ** 常駐チェック **
  3007.     suba.l    a1,a1
  3008.     SUPER
  3009.     move.l    d0,SPP
  3010.     moveq    #0,d1
  3011.     jbsr    InvChk
  3012.     *movea.l    a0,a3                *常駐先頭アドレス
  3013.     move.l    a0,d0
  3014.     beq    @f
  3015.     *lea    _SS_-SS(a0),a0
  3016.     adda.l    #_SS_-SS,a0
  3017. @@:
  3018.     move.l    a0,_ST_CHK            *常駐先頭アドレス
  3019.     *------
  3020.     movea.l    TRP5_,a0
  3021.     suba.l    #TRP5-head,a0
  3022.     jbsr    MarkerChk
  3023.     jbne    @f
  3024.     bset    #0,d1
  3025. @@:
  3026.     movea.l    PWSW_,a0
  3027.     suba.l    #PWSW-head,a0
  3028.     jbsr    MarkerChk
  3029.     jbne    @f
  3030.     bset    #1,d1
  3031. @@:
  3032.     movea.l    B_KEYSNS_,a0
  3033.     suba.l    #B_KEYSNS-head,a0
  3034.     jbsr    MarkerChk
  3035.     jbne    @f
  3036.     bset    #2,d1
  3037. @@:
  3038.     movea.l    BITSNS_,a0
  3039.     suba.l    #BITSNS-head,a0
  3040.     jbsr    MarkerChk
  3041.     jbne    @f
  3042.     bset    #3,d1
  3043. @@:
  3044.     movea.l    MFP_,a0
  3045.     suba.l    #MFP-head,a0
  3046.     jbsr    MarkerChk
  3047.     jbne    @f
  3048.     bset    #4,d1
  3049. @@:
  3050.     move.w    #INTVCG_,-(sp)
  3051.     DOS    _INTVCG
  3052.     addq.l    #2,sp
  3053.     movea.l    d0,a0
  3054.     suba.l    #INTVCG-head,a0
  3055.     jbsr    MarkerChk
  3056.     jbne    @f
  3057.     bset    #5,d1
  3058. @@:
  3059.     move.w    #INTVCS_,-(sp)
  3060.     DOS    _INTVCG
  3061.     addq.l    #2,sp
  3062.     movea.l    d0,a0
  3063.     suba.l    #INTVCS-head,a0
  3064.     jbsr    MarkerChk
  3065.     jbne    @f
  3066.     bset    #6,d1
  3067. @@:
  3068.     movea.l    SCALL_,a0
  3069.     suba.l    #SCALL-head,a0
  3070.     jbsr    MarkerChk
  3071.     jbne    @f
  3072.     bset    #7,d1
  3073. @@:
  3074.     move.l    d1,VC_CHK            *d1に常駐状態
  3075.  
  3076.     ** 1次コマンドラインチェック for @ **
  3077.     tst.b    (a2)+                *スキップ
  3078.     move.b    (a2),d0
  3079.     cmpi.b    #'@',d0
  3080.     bne    1f
  3081.     tst.l    _ST_CHK
  3082.     bne    @f
  3083.     pea    LRNCDC(pc)
  3084.     jbra    PE    *end
  3085. @@:    clr.l    _ST_CHK
  3086.     move.w    #-1,swii    * [@]がある?
  3087.     addq.l    #1,a2
  3088. 1:
  3089.     ** 常駐していたらそのデータを引用 **
  3090.     movea.l    _ST_CHK(pc),a3
  3091.     move.l    a3,d0
  3092.     jbeq    9f
  3093.     lea    __COM__-_SS_(a3),a0
  3094.     lea    __COM__,a1
  3095.     *move.l    #(__COM__S-__COM__)/2-1,d0
  3096.     move.l    KeepLong-_SS_(a3),d0
  3097. @@:    move.b    (a0)+,(a1)+
  3098.     subq.l    #1,d0
  3099.     bcc    @b
  3100.     *move.w    #1,_KeySwi
  3101.     clr.w    _MuTmMod
  3102.         *p_List系を書き戻す
  3103. 9:    move.l    _CdcTrak,d0
  3104.     bsr    _CalcListWorks
  3105. conl:
  3106.     ** SCSI-IOCSチェック **
  3107.     move.b    $07D4.w,d0
  3108.     bpl    @f            * F5 なので bmi なら未登録になる
  3109.     pea    LRSCIO(pc)
  3110.     jbra    PE    *end
  3111. @@:
  3112.     ** Mach-2 チェック
  3113.     SCSI__    _S_LEVEL        *$0A        *未公開コール
  3114.     cmpi.w    #$6411,d0
  3115.     bcs    @f
  3116.     cmpi.w    #$6413+1,d0
  3117.     bcc    @f
  3118.     lea    $FFF000,a0
  3119.     bra    SUC_L2
  3120. @@:
  3121.     ** SCSI ROM 位置チェック **
  3122.     lea    $FC0024,a0
  3123.     bsr    BusErChk
  3124.     bne    @f                *バスエラーなら・・・
  3125.     cmpi.l    #'SCSI',(a0)
  3126.     beq    SUC_L1
  3127. @@:    lea    $EA0044,a0
  3128.     bsr    BusErChk
  3129.     bne    SUC_L3                *バスエラーなら・・・
  3130.     cmpi.l    #'SCSI',(a0)
  3131.     jbeq    @f
  3132. SUC_L3:    suba.l    a0,a0                *ない
  3133.     jbra    SUC_L2
  3134. @@:        **スロット
  3135.     lea    $EA0000,a0
  3136.     jbra    SUC_L2
  3137. SUC_L1:        **内蔵モデル
  3138.     lea    $E96020,a0
  3139. SUC_L2:
  3140.     move.l    a0,_SCSI_ROMB
  3141.  
  3142.     ** 環境変数 CDROM チェック **
  3143.     move.l    _ST_CHK(pc),d0            *常駐してたら再設定しない
  3144.     jbne    1f
  3145.     pea    GETBUF(pc)
  3146.     clr.l    -(sp)
  3147.     pea    CDROM_NAME(pc)
  3148.     DOS    _GETENV
  3149.     lea    12(sp),sp
  3150.     tst.l    d0
  3151.     jbmi    1f
  3152.     move.b    GETBUF(pc),d0
  3153.     ori.b    #$20,d0
  3154.     cmpi.b    #'a',d0
  3155.     bcs    @f
  3156.     cmpi.b    #'f'+1,d0
  3157.     bcc    @f
  3158.     subi.b    #'a',d0
  3159.     addi.b    #10,d0
  3160.     bra    2f
  3161. @@:
  3162.     subi.b    #'0',d0
  3163.     bmi    1f
  3164.     cmpi.b    #16,d0
  3165.     bcc    1f
  3166.  
  3167.     move.b    GETBUF+1(pc),d7        *次の数字も確認
  3168.     subi.b    #'0',d7
  3169.     bmi    @f
  3170.     cmpi.b    #16,d7
  3171.     bcc    @f
  3172.     mulu    #10,d0
  3173.     add.w    d7,d0
  3174. @@:
  3175. 2:
  3176.     andi.w    #$00FF,d0
  3177.     move.w    d0,_SCSI_ID+2
  3178.     move.w    d0,_SCSI_IDF+2
  3179.  
  3180. 1:
  3181.     move.l    _ST_CHK(pc),d0            ************************
  3182.     jbne    conl2
  3183.     jbsr    _CdListSub_C
  3184. conl2:
  3185.  
  3186.     ** 2次コマンドラインチェック **
  3187. sw:    move.b    (a2)+,d0
  3188.     jbeq    swend
  3189.     cmpi.b    #' ',d0
  3190.     jbeq    sw
  3191.     cmpi.b    #$09,d0        *tab
  3192.     jbeq    sw
  3193.     cmpi.b    #'-',d0
  3194.     jbeq    swc
  3195.     cmpi.b    #'/',d0
  3196.     jbeq    swc
  3197.     cmpi.b    #'0',d0
  3198.     jbcs    @f
  3199.     cmpi.b    #'9'+1,d0
  3200.     jbcs    OwnPlay
  3201. @@:
  3202.     ori.b    #$20,d0    *小文字化!
  3203.     cmpi.b    #'a',d0
  3204.     jbeq    AllPlay
  3205. エラー0:
  3206.     moveq    #0,d0
  3207. エラー:
  3208.     move.l    d0,d7
  3209.     beq    1f
  3210.     move.w    #' ',-(sp)
  3211.     DOS    _PUTCHAR
  3212.     move.w    #'/',-(sp)
  3213.     DOS    _PUTCHAR
  3214.     addq.l    #4,sp
  3215.  
  3216.     moveq    #0,d0
  3217.     rol.l    #8,d7
  3218.     move.b    d7,d0
  3219.     beq    @f
  3220.     move.w    d0,-(sp)
  3221.     DOS    _PUTCHAR
  3222.     addq.l    #4,sp
  3223. @@:
  3224.     moveq    #0,d0
  3225.     rol.l    #8,d7
  3226.     move.b    d7,d0
  3227.     beq    @f
  3228.     move.w    d0,-(sp)
  3229.     DOS    _PUTCHAR
  3230.     addq.l    #4,sp
  3231. @@:
  3232.     moveq    #0,d0
  3233.     rol.l    #8,d7
  3234.     move.b    d7,d0
  3235.     beq    @f
  3236.     move.w    d0,-(sp)
  3237.     DOS    _PUTCHAR
  3238.     addq.l    #4,sp
  3239. @@:
  3240.     moveq    #0,d0
  3241.     rol.l    #8,d7
  3242.     move.b    d7,d0
  3243.     beq    @f
  3244.     move.w    d0,-(sp)
  3245.     DOS    _PUTCHAR
  3246.     addq.l    #4,sp
  3247. @@:
  3248.     pea    LR6_(pc)
  3249.     clr.w    eddip    *常駐エリアにデータを戻すか
  3250.     jbra    PE    *end
  3251. 1:
  3252.     pea    LR6(pc)
  3253.     clr.w    eddip    *常駐エリアにデータを戻すか
  3254.     jbra    PE    *end
  3255.  
  3256. swc:    **スイッチ判断
  3257.     move.b    (a2)+,d0
  3258.     jbeq    エラー0
  3259.     cmpi.b    #'?',d0
  3260.     jbeq    help
  3261.     ori.b    #$20,d0    *小文字化!
  3262.     cmpi.b    #'r',d0
  3263.     jbeq    swcm1
  3264.     cmpi.b    #'i',d0
  3265.     jbeq    iswc
  3266.     cmpi.b    #'l',d0
  3267.     jbeq    lswc
  3268.     cmpi.b    #'d',d0
  3269.     jbeq    dswc
  3270.  
  3271.     cmpi.b    #'e',d0
  3272.     jbeq    eswc
  3273.     cmpi.b    #'b',d0
  3274.     jbeq    bswc
  3275.     cmpi.b    #'j',d0
  3276.     jbeq    jswc
  3277.     cmpi.b    #'t',d0
  3278.     jbeq    tswc
  3279.     cmpi.b    #'p',d0
  3280.     jbeq    pswc
  3281.     cmpi.b    #'k',d0
  3282.     jbeq    kswc
  3283.     cmpi.b    #'f',d0
  3284.     jbeq    fswc
  3285.     cmpi.b    #'w',d0
  3286.     jbeq    wswc
  3287.     cmpi.b    #'o',d0
  3288.     jbeq    oswc
  3289.     cmpi.b    #'x',d0
  3290.     jbeq    xswc
  3291.     cmpi.b    #'u',d0
  3292.     jbeq    uswc
  3293.     cmpi.b    #'v',d0
  3294.     jbeq    vswc
  3295.     cmpi.b    #'a',d0
  3296.     jbeq    aswc
  3297.     cmpi.b    #'m',d0
  3298.     jbeq    mswc
  3299.     cmpi.b    #'z',d0
  3300.     jbeq    zswc
  3301.     cmpi.b    #'s',d0
  3302.     jbeq    sswc    *CD_STOP
  3303.     cmpi.b    #'c',d0
  3304.     jbeq    cswc    *CD_CONT
  3305.     cmpi.b    #'h',d0
  3306.     jbeq    help
  3307.     pea    LR7(pc)
  3308.     clr.w    eddip    *常駐エリアにデータを戻すか
  3309.     jbra    PE    *end
  3310.  
  3311. swcoo:    .dc.w    0    *なにかコマンドをやったら1
  3312. swcom:    .dc.w    0    *最終的なコマンド
  3313. swtr:    .dc.w    0    * /trがある?
  3314. swpw:    .dc.w    0    * /pwがある?
  3315. sw_e:    .dc.w    0    * /eがある?
  3316. swii:    .dc.w    0    * [@]がある?
  3317. eddip:    .dc.w    0    *常駐エリアにデータを戻すか
  3318.  
  3319. swend:**************************************
  3320.     move.b    swcom(pc),d0
  3321.     cmpi.b    #'r',d0
  3322.     jbeq    free
  3323.     cmpi.b    #'i',d0
  3324.     jbeq    keep
  3325.     cmpi.b    #'d',d0
  3326.     jbeq    CD_ERY
  3327.     cmpi.b    #'l',d0
  3328.     jbeq    List    *CD_LIST
  3329.     cmpi.b    #'m',d0
  3330.     jbeq    m2swc    *CD_MEM_LIST
  3331.     move.w    swcoo(pc),d0    *なにかコマンドをやったら1
  3332.     jbne    PEE
  3333.  
  3334.     *movea.l    SPP,a1
  3335.     *SUPER
  3336.     jbsr    _cd_play_inf
  3337.     jbra    PEE
  3338.  
  3339. swcm1:**************************************
  3340.     move.b    (a2),d2
  3341.     beq    swcm
  3342.     cmpi.b    #' ',d2
  3343.     beq    swcm
  3344.     cmpi.b    #9,d2
  3345.     beq    swcm
  3346.     move.l    #'R',d0
  3347.     bra    エラー
  3348. swcm:**************************************
  3349.     move.b    d0,swcom
  3350.     move.b    (a2),swcom+1
  3351.     jbeq    @f
  3352.     addq.l    #1,a2
  3353. @@:    jbra    sw
  3354.  
  3355. dswc:**************************************
  3356.     move.b    (a2),d2
  3357.     jbeq    swcm
  3358.     cmpi.b    #' ',d2
  3359.     ori.b    #$20,d2    *小文字化!
  3360.     cmpi.b    #'i',d2
  3361.     jbne    swcm
  3362.         ************-DI[n]
  3363.     addq.l    #1,a2
  3364.     move.w    #1,swcoo
  3365.     jbsr    AtoI
  3366.     move.b    d0,_DiSwc
  3367.      move.w    #1,eddip    *バックライト
  3368.     jbra    sw
  3369.  
  3370. iswc:**************************************
  3371.     move.b    (a2),d2
  3372.     jbeq    swcm
  3373.     cmpi.b    #' ',d2
  3374.     jbeq    swcm
  3375.     ori.b    #$20,d2    *小文字化!
  3376.     cmpi.b    #'d',d2
  3377.     jbeq    1f
  3378.     cmpi.b    #'i',d2
  3379.     jbeq    @f
  3380.     move.l    #'I',d0
  3381.     jbra    エラー
  3382. @@:        ************** /II
  3383.     addq.l    #1,a2
  3384.      clr.w    eddip    *バックライト
  3385.     jbsr    _PrintStai
  3386.     jbra    PEE
  3387. 1:        ************** /ID[m]
  3388.     addq.l    #1,a2
  3389.     move.w    #1,swcoo
  3390.     jbsr    AtoI
  3391.     cmpi.l    #16,d0
  3392.     jbcs    @f
  3393.     move.l    #'ID',d0
  3394.     bra    エラー
  3395. @@:
  3396.     move.w    d0,_SCSI_ID+2    * ID
  3397.     move.w    d0,_SCSI_IDF+2    * ID
  3398. .if 1
  3399.     move.b    (a2),d0
  3400.     cmpi.b    #',',d0
  3401.     bne    1f
  3402.     addq.l    #1,a2
  3403.     jbsr    AtoI
  3404.     cmpi.l    #16,d0
  3405.     jbcs    @f
  3406.     move.l    #'ID',d0
  3407.     bra    エラー
  3408. @@:
  3409.     move.w    d0,_SCSI_BANKID            *切り換え ID
  3410. 1:
  3411. .endif
  3412.     jbsr    _CdListSub_C
  3413.     jbra    sw
  3414.  
  3415. lswc:**************************************
  3416.     move.b    (a2),d2
  3417.     jbeq    swcm
  3418.     cmpi.b    #' ',d2
  3419.     jbeq    swcm
  3420.     ori.b    #$20,d2    *小文字化!
  3421.     cmpi.b    #'m',d2
  3422.     jbeq    @f
  3423.     cmpi.b    #'e',d2
  3424.     jbeq    lswc_led
  3425.     cmpi.b    #'u',d2
  3426.     jbeq    lswc_l1
  3427.     jbra    swcm
  3428. @@:        ************** /LM[m]
  3429.     addq.l    #1,a2
  3430.     move.w    #1,swcoo
  3431.     jbsr    AtoI
  3432.     cmpi.l    #9+1,d0        ***
  3433.     bcs    @f
  3434.     move.l    #'LM',d0
  3435.     bra    エラー
  3436. @@:
  3437.     move.w    d0,_LUN_MAX            *LUN
  3438.     bsr    CCL_LSET            *LUN関係キーセット
  3439.     clr.w    _JukeBox            *0:ノーマル 1:JukeBox
  3440.      move.w    #1,eddip            *バックライト
  3441.     jbra    sw
  3442.  
  3443. lswc_l1:    **************** /LUN[m]
  3444.     move.l    #'L',d0
  3445.     addq.l    #1,a2
  3446.     move.b    (a2),d2
  3447.     jbeq    エラー
  3448.     cmpi.b    #' ',d2
  3449.     jbeq    エラー
  3450.     ori.b    #$20,d2    *小文字化!
  3451.     cmpi.b    #'n',d2
  3452.     jbne    エラー
  3453.     addq.l    #1,a2
  3454.     jbsr    AtoI
  3455.     tst.w    d0
  3456.     bpl    @f
  3457.     move.l    #'LUN',d0
  3458.     bra    エラー
  3459. @@:
  3460.     cmpi.l    #8+1,d0            **
  3461.     jbcs    @f
  3462.     move.l    #'LUN',d0
  3463.     bra    エラー
  3464. @@:
  3465.     tst.w    _JukeBox            *0:ノーマル 1:JukeBox
  3466.     beq    @f
  3467.     clr.w    _JukeBox            *0:ノーマル 1:JukeBox
  3468.     bra    1f
  3469. @@:
  3470.     cmp.w    _SCSI_LUN__,d0
  3471.     jbeq    @f
  3472. 1:    jbsr    _SetLUN                *LUN変更 d0=LUN
  3473.     jbsr    _EJE_EMU
  3474.     clr.w    _CDIN
  3475.     clr.w    _TrkNo
  3476.     clr.w    _TrkNoS
  3477.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  3478.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  3479.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  3480.     move.w    #-1,_MemPt
  3481.     move.w    #-1,_RndPt
  3482.     clr.w    _DisSuuzi10            * LED用数字クリア
  3483.     jbsr    _CdListSub_C
  3484.     jbsr    HenSuSet
  3485.     *move.w    #1,swcoo
  3486. @@:     move.w    #1,eddip    *バックライト
  3487.     jbra    sw
  3488.  
  3489. lswc_led:    ******************** /LED[n]
  3490.     move.l    #'L',d0
  3491.     addq.l    #1,a2
  3492.     move.w    #1,swcoo
  3493.     move.b    (a2),d2
  3494.     jbeq    エラー
  3495.     cmpi.b    #' ',d2
  3496.     jbeq    エラー
  3497.     ori.b    #$20,d2    *小文字化!
  3498.     cmpi.b    #'d',d2
  3499.     jbne    エラー
  3500.     addq.l    #1,a2
  3501.     jbsr    AtoI
  3502.     tst.l    d0
  3503.     jbeq    1f
  3504.         *表示
  3505.     cmpi.l    #2,d0
  3506.     beq    2f
  3507.     move.w    #1,_DisMode            *0;非表示 1;表示 2;Small表示
  3508.     tst.l    _ST_CHK
  3509.     beq    @f
  3510.     jbsr    _B_KLE_D
  3511. @@:     move.w    #1,eddip    *バックライト
  3512.     jbra    sw
  3513.  
  3514. 2:        *Small表示
  3515.     move.w    #2,_DisMode            *0;非表示 1;表示 2;Small表示
  3516.     tst.l    _ST_CHK
  3517.     beq    @f
  3518.     jbsr    FnkBerChk
  3519.     jbeq    @f
  3520.     jbsr    KillLeds
  3521.     jbsr    _B_KLE_D
  3522. @@:     move.w    #1,eddip    *バックライト
  3523.     jbra    sw
  3524.  
  3525. 1:        *消す
  3526.     tst.l    _ST_CHK
  3527.     beq    @f
  3528.     jbsr    FnkBerChk
  3529.     jbeq    @f
  3530.     jbsr    KillLeds
  3531. @@:
  3532.     clr.w    _DisMode            *0;非表示 1;表示 2;Small表示
  3533.      move.w    #1,eddip    *バックライト
  3534.     jbra    sw
  3535.  
  3536. jswc:**************************************
  3537.     move.b    (a2),d2
  3538.     cmpi.b    #' ',d2
  3539.     ori.b    #$20,d2    *小文字化!
  3540.     cmpi.b    #'b',d2
  3541.     jbeq    @f
  3542.     move.l    #'J',d0
  3543.     bra    エラー
  3544. @@:
  3545.     addq.l    #1,a2
  3546.     move.w    #1,swcoo
  3547.  
  3548.     tst.w    _LUN_MAX            *LUN
  3549.     bne    @f
  3550.     pea    LRNOLM(pc)
  3551.     clr.w    eddip    *常駐エリアにデータを戻すか
  3552.     jbra    PE    *end
  3553. @@:
  3554.     move.w    #1,_JukeBox            *0:ノーマル 1:JukeBox
  3555.     jbsr    _ZeroUnit
  3556.     clr.w    _CDIN
  3557.     clr.w    _TrkNo
  3558.     clr.w    _TrkNoS
  3559.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  3560.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  3561.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  3562.     move.w    #-1,_MemPt
  3563.     move.w    #-1,_RndPt
  3564.     clr.w    _DisSuuzi10            * LED用数字クリア
  3565.     tst.l    _ST_CHK
  3566.     jbeq    @f
  3567.     movem.l    d0-d2/a0-a2,-(sp)
  3568.     Print    LRLTRD(pc)
  3569.     jbsr    _CdListRead
  3570.     movem.l    (sp)+,d0-d2/a0-a2
  3571. @@:    jbsr    HenSuSet
  3572.      move.w    #1,eddip    *バックライト
  3573.     jbra    sw
  3574.  
  3575. eswc:**************************************
  3576.     tst.w    sw_e    * /eがある?
  3577.     jbeq    @f
  3578.     move.l    #'E',d0
  3579.     bra    エラー
  3580. @@:
  3581.     move.w    #-1,sw_e
  3582.     pea    GETBUF(pc)
  3583.     clr.l    -(sp)
  3584.     pea    CDCSW_NAME(pc)
  3585.     DOS    _GETENV
  3586.     lea    12(sp),sp
  3587.     tst.l    d0
  3588.     jbmi    @f
  3589.     lea    GETBUF(pc),a2
  3590. @@:    jbra    sw
  3591.  
  3592. bswc:**************************************
  3593.     move.w    #1,swcoo
  3594.     jbsr    AtoI
  3595.     lea    CmdC_List_L1(pc),a0        *ノーマル用
  3596.     *tst.w    d0
  3597.     move.w    d0,_CmdC_Mod
  3598.     jbeq    @f
  3599.     lea    CmdC_List_L2(pc),a0        *CR用
  3600.     cmpi.w    #$1,d0
  3601.     jbeq    @f
  3602.     lea    CmdC_List_L3(pc),a0        *compact用
  3603. @@:
  3604.     move.l      (a0),CmdC_List
  3605.     move.l      (a0),CmdC_ListD
  3606.     move.l     4(a0),CmdC_List+4
  3607.     move.l     4(a0),CmdC_ListD+4
  3608.     move.l     8(a0),CmdC_List+8
  3609.     move.l     8(a0),CmdC_ListD+8
  3610.     move.l    12(a0),CmdC_List+12
  3611.     move.l    12(a0),CmdC_ListD+12
  3612.     bsr    CCL_LSET            *LUN関係キーセット
  3613.      move.w    #1,eddip    *バックライト
  3614.     jbra    sw
  3615.  
  3616. mswc:**************************************
  3617.     move.b    (a2),d2
  3618.     jbeq    swcm
  3619.     cmpi.b    #' ',d2
  3620.     jbeq    swcm
  3621.     ori.b    #$20,d2    *小文字化!
  3622.     cmpi.b    #'u',d2
  3623.     jbeq    @f
  3624.     move.l    #'M',d0
  3625.     bra    エラー
  3626. @@:            ******* /MU
  3627.     move.w    #-1,_CdcMode            *1:しようする
  3628.     move.w    #1,swcoo
  3629.     addq.l    #1,a2
  3630.     move.w    #-1,_CdcMode            *1:しようする
  3631.     move.w    #1,_MuTmMod            *0:ノーマル 1:強引にキーベクタを書き替え
  3632.     move.w    #1,_KeySwi
  3633.     move.w    #1,eddip    *バックライト
  3634.     jbra    sw
  3635.  
  3636. tswc:**************************************
  3637.     move.w    #1,swcoo
  3638.     move.b    (a2),d0
  3639.     cmpi.b    #'0',d0
  3640.     jbne    @f
  3641.     addq.l    #1,a2
  3642.     moveq    #0,d0
  3643.     jbra    tswc_L1
  3644. @@:
  3645.     jbsr    AtoI
  3646.     tst.w    d0
  3647.     jbeq    tswc_L2
  3648. tswc_L1:
  3649.      move.w    #1,eddip    *バックライト
  3650.         ***演奏中の割り込み間隔
  3651.     jbsr    _SetKeyTDCT    *move.w    d0,_KeyTDCT
  3652.         ***演奏中でない時の割り込み間隔
  3653.     move.w    d0,_NoPlWitT
  3654.     move.b    (a2),d0
  3655.     cmpi.b    #',',d0
  3656.     jbne    sw
  3657.     addq.l    #1,a2
  3658.     jbsr    AtoI
  3659.     move.w    d0,_PlyWitT    *演奏後の待ち間隔
  3660.     move.b    (a2),d0
  3661.     cmpi.b    #',',d0
  3662.     jbne    sw
  3663.     addq.l    #1,a2
  3664.     jbsr    AtoI
  3665.     move.w    d0,_NoPlWitT    *演奏中でない時の割り込み間隔
  3666.     jbra    sw
  3667.  
  3668. tswc_L2:
  3669.     move.b    (a2),d0
  3670.     jbne    @f
  3671.     move.l    #'T',d0
  3672.     jbra    エラー
  3673. @@:
  3674.     ori.b    #$20,d0    *小文字化!
  3675.     cmpi.b    #'r',d0
  3676.     jbeq    trswc
  3677.     cmpi.b    #'y',d0
  3678.     jbeq    tyswc
  3679.     move.l    #'T',d0
  3680.     jbra    エラー
  3681. trswc:        *********** /TR
  3682.     move.w    swii(pc),d0
  3683.     jbne    @f
  3684.     move.l    _ST_CHK(pc),d0
  3685.     jbeq    @f
  3686.     Print    LRERSW(pc)
  3687.     jbra    PEE
  3688. @@:
  3689.     addq.l    #1,a2
  3690.     move.w    #1,swtr    * /trがある?
  3691.     jbra    sw
  3692. tyswc:        ********* /TR[m]
  3693.     addq.l    #1,a2
  3694.     jbsr    AtoI
  3695.     subq.l    #1,d0
  3696.     bpl    @f
  3697.     move.l    #'TR',d0
  3698.     bra    エラー
  3699. @@:
  3700.     cmpi.l    #8,d0
  3701.     jbcs    @f
  3702.     move.l    #'TR',d0
  3703.     jbra    エラー
  3704. @@:
  3705.     tst.w    _JukeBox            *0:ノーマル 1:JukeBox
  3706.     beq    @f
  3707.     clr.w    _JukeBox            *0:ノーマル 1:JukeBox
  3708.     bra    1f
  3709. @@:
  3710.     cmp.w    _SCSI_LUN__,d0
  3711.     jbeq    @f
  3712. 1:    jbsr    _SetLUN                *LUN変更 d0=LUN
  3713.     jbsr    _EJE_EMU
  3714.     clr.w    _CDIN
  3715.     clr.w    _TrkNo
  3716.     clr.w    _TrkNoS
  3717.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  3718.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  3719.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  3720.     move.w    #-1,_MemPt
  3721.     move.w    #-1,_RndPt
  3722.     clr.w    _DisSuuzi10            * LED用数字クリア
  3723.     jbsr    _CdListSub_C
  3724.     jbsr    HenSuSet
  3725.     *move.w    #1,swcoo
  3726. @@:     move.w    #1,eddip    *バックライト
  3727.     jbra    sw
  3728.  
  3729. pswc:**************************************
  3730.     move.w    #1,swcoo
  3731.     move.b    (a2),d0
  3732.     jbne    @f
  3733.     move.l    #'P',d0
  3734.     jbeq    エラー
  3735. @@:
  3736.     ori.b    #$20,d0    *小文字化!
  3737.     cmpi.b    #'d',d0
  3738.     jbeq    pswc_l1
  3739.     cmpi.b    #'t',d0
  3740.     jbeq    pswc_l2
  3741.     cmpi.b    #'m',d0
  3742.     jbeq    pswc_pm
  3743.     cmpi.b    #'s',d0
  3744.     jbeq    pswc_ps
  3745.     cmpi.b    #'w',d0
  3746.     jbeq    @f
  3747.     move.l    #'P',d0
  3748.     bra    エラー
  3749. @@:        ********* /PW
  3750.     move.w    swii(pc),d0
  3751.     jbne    @f
  3752.     move.l    _ST_CHK(pc),d0
  3753.     jbeq    @f
  3754.     Print    LRERSW(pc)
  3755.     jbra    PEE
  3756. @@:
  3757.     addq.l    #1,a2
  3758.     move.w    #1,swpw    * /pwがある?
  3759.     jbra    sw
  3760.  
  3761. pswc_l1:    ****** /PD
  3762.     addq.l    #1,a2
  3763.     move.w    #1,_SWPD    * /pdがある?
  3764.     clr.w    _LUN_MAX    * LUN
  3765.     clr.w    _JukeBox            *0:ノーマル 1:JukeBox
  3766.     moveq    #1,d0
  3767.     jbsr    _SetLUN                *LUN変更 d0=LUN
  3768.     bsr    CCL_LSET            *LUN関係キーセット
  3769.     clr.w    _CDIN
  3770.     clr.w    _TrkNo
  3771.     clr.w    _TrkNoS
  3772.     clr.w    _DtTrak                *1;データトラック有り,-1;データのみ
  3773.     clr.w    _MemMode            *0:ノーマル 1:メモリ
  3774.     clr.w    _MemLong            *メモリながさ 0以外ならMEMORY
  3775.     move.w    #-1,_MemPt
  3776.     move.w    #-1,_RndPt
  3777.     clr.w    _DisSuuzi10            * LED用数字クリア
  3778.     jbsr    _CdListSub_C
  3779.     jbsr    HenSuSet
  3780.     *move.w    #1,swcoo
  3781.      move.w    #1,eddip    *バックライト
  3782.     jbra    sw
  3783.  
  3784. pswc_l2:    ****** /PT[n]
  3785.     addq.l    #1,a2
  3786.     jbsr    AtoI
  3787.     andi.w    #$3,d0
  3788.     move.w    d0,_LEDTMRV
  3789.      move.w    #1,eddip    *バックライト
  3790.     jbra    sw
  3791.  
  3792. pswc_pm:    ****** /PM[n]
  3793.     addq.l    #1,a2
  3794.     jbsr    AtoI
  3795.      tst.l    d0
  3796.      beq    @f
  3797.      clr.w    _PLAYSCSTS
  3798.      move.w    #1,eddip    *バックライト
  3799.     jbra    sw
  3800. @@:
  3801.      move.w    #1,_PLAYSCSTS
  3802.      move.w    #1,eddip    *バックライト
  3803.     jbra    sw
  3804.  
  3805. pswc_ps:    ****** /PS[n]
  3806.     addq.l    #1,a2
  3807.     jbsr    AtoI
  3808.      tst.l    d0
  3809.      beq    @f
  3810.      clr.w    _PLAYSCCAL
  3811.      move.w    #1,eddip    *バックライト
  3812.     jbra    sw
  3813. @@:
  3814.      move.w    #1,_PLAYSCCAL
  3815.      move.w    #1,eddip    *バックライト
  3816.     jbra    sw
  3817.  
  3818.  
  3819.  
  3820.  
  3821. kswc:**************************************
  3822.     move.w    #1,swcoo
  3823.     move.b    (a2),d0
  3824.     jbne    @f
  3825.     move.l    #'K',d0
  3826.     jbra    エラー
  3827. @@:
  3828.     ori.b    #$20,d0    *小文字化!
  3829.     cmpi.b    #'s',d0
  3830.     jbeq    kswc_ks
  3831.     cmpi.b    #'c',d0
  3832.     jbeq    kswc_kc
  3833.     cmpi.b    #'n',d0
  3834.     jbeq    kswc_kn
  3835.  
  3836.     jbsr    AtoI
  3837.     andi.l    #$1FF,d0
  3838.     jbne    @f
  3839.     move.l    #'K',d0
  3840.     jbra    エラー
  3841. @@:
  3842. kswc_k:        ****** /K[n]
  3843.     move.l    d0,d2
  3844.     andi.l    #$1E0,d2
  3845.     lsl.l    #8,d2        *11
  3846.     lsl.l    #3,d2
  3847.     move.l    d2,_SFTK
  3848.     move.w    d0,d2
  3849.     andi.w    #$001F,d2
  3850.     ror.w    #3,d2
  3851.     or.l    d2,_SFTK
  3852.      move.w    #1,eddip    *バックライト
  3853.     jbra    sw
  3854.  
  3855. *    | 0 0 0 0 OPT.2 OPT.1 CTRL SHIFT |
  3856. *                |XF3 XF2 XF1 0 0 0 0 0| 0 0 0 0 0 0 XF5 XF4 
  3857. *     OPT.2  OPT.1 CTRL SHIFT XF5  XF4 XF3 XF2 XF1
  3858.  
  3859. kswc_kc:    ****** /KC[m],[n]
  3860.     addq.l    #1,a2
  3861.     jbsr    AtoI
  3862.     tst.l    d0
  3863.     jbeq    1f
  3864.     cmpi.l    #$80,d0
  3865.     jbcs    @f
  3866. kswc_kc_er:
  3867.     move.l    #'KC',d0
  3868.     jbra    エラー
  3869. @@:
  3870.     move.l    d0,d7            *一つ目
  3871.     move.b    (a2)+,d0
  3872.     cmpi.b    #',',d0
  3873.     jbne    kswc_kc_er
  3874.     jbsr    AtoI
  3875.     tst.l    d0
  3876.     jbeq    kswc_kc_er
  3877.     cmpi.l    #$80,d0
  3878.     jbcc    kswc_kc_er
  3879.     lea    KeyC_List,a0
  3880.     move.b    (a0,d0.w),d2
  3881.     move.b    (a0,d7.w),(a0,d0.w)
  3882.     move.b    d2,(a0,d7.w)
  3883.      move.w    #1,eddip    *バックライト
  3884.     jbra    sw
  3885. 1:        *初期化
  3886.     lea    KeyC_List,a0
  3887.     moveq    #0,d0
  3888.     moveq    #$80-1,d2
  3889. @@:    move.b    d0,(a0)+
  3890.     addq.l    #1,d0
  3891.     dbra    d2,@b
  3892.      move.w    #1,eddip    *バックライト
  3893.     jbra    sw
  3894.  
  3895. kswc_kn:    ****** /KN[m]
  3896.     addq.l    #1,a2
  3897.     jbsr    AtoI
  3898.     tst.l    d0
  3899.     bne    @f
  3900.     move.l    #'KN',d0
  3901.     jbra    エラー
  3902. @@:
  3903.     cmpi.l    #$80,d0
  3904.     jbcs    @f
  3905.     move.l    #'KN',d0
  3906.     jbra    エラー
  3907. @@:
  3908.     move.w    d0,d2
  3909.     lsr.w    #3,d0
  3910.     lea    CmdC_List,a0
  3911.     bclr.b    d2,(a0,d0.w)
  3912.     lea    CmdC_ListD,a0
  3913.     bclr.b    d2,(a0,d0.w)
  3914.      move.w    #1,eddip    *バックライト
  3915.     jbra    sw
  3916.  
  3917. kswc_ks:    ****** /KS
  3918.     addq.l    #1,a2
  3919.     clr.w    _KeySwi
  3920.      move.w    #1,eddip    *バックライト
  3921.     jbra    sw
  3922.  
  3923.  
  3924.  
  3925. aswc:**************************************
  3926.     jbsr    _CdcModeOn
  3927.     move.w    #1,swcoo
  3928.     jbsr    AtoI
  3929.     tst.l    d0
  3930.     bne    @f
  3931.     move.w    #-1,_AutoMode            *0:ノーマル 1:オート
  3932.      move.w    #1,eddip    *バックライト
  3933.     jbra    sw
  3934. @@:    move.w    #-1,_RndMode            *0:ノーマル 1:ランダム
  3935.      move.w    #1,eddip    *バックライト
  3936.     jbra    sw
  3937.  
  3938. uswc:**************************************
  3939.     move.w    #1,swcoo
  3940.     move.b    (a2),d0
  3941.     ori.b    #$20,d0    *小文字化!
  3942.     cmpi.b    #'a',d0
  3943.     bne    @f
  3944.     addq.l    #1,a2
  3945.     move.w    #-1,_TestunitSw        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  3946.      move.w    #1,eddip    *バックライト
  3947.     jbra    sw
  3948. @@:
  3949.     jbsr    AtoI
  3950.      move.w    #1,eddip    *バックライト
  3951.     tst.l    d0
  3952.     beq    @f
  3953.     clr.w    _TestunitSw        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  3954.     jbra    sw
  3955. @@:    move.w    #1,_TestunitSw        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  3956.     jbra    sw
  3957.  
  3958. vswc:**************************************
  3959.     move.w    #1,swcoo
  3960.     move.b    (a2),d0
  3961.     bne    @f
  3962.     move.l    #'V',d0
  3963.     jbra    エラー
  3964. @@:
  3965.     cmpi.b    #'m',d0
  3966.     beq    1f
  3967.     cmpi.b    #'M',d0
  3968.     beq    1f
  3969.         **** /V[n]
  3970.     jbsr    AtoI
  3971.     mulu    #5,d0
  3972.     movem.l    d0-d7/a0-a6,-(sp)
  3973.      move.l    d0,-(sp)
  3974.      jbsr    _ChnVol
  3975.      addq.l    #4,sp
  3976.     movem.l    (sp)+,d0-d7/a0-a6
  3977.      move.w    #1,eddip    *バックライト
  3978.     jbra    sw
  3979. 1:        **** /VM[n]
  3980.     addq.l    #1,a2
  3981.     jbsr    AtoI
  3982.     mulu    #5,d0
  3983.     cmpi.l    #255+1,d0
  3984.     jbcs    @f
  3985.     move.l    #'VM',d0
  3986.     jbra    エラー
  3987. @@:
  3988.     tst.l    d0
  3989.     jbeq    2f
  3990.     move.w    d0,_MastVol
  3991.     movem.l    d0-d7/a0-a6,-(sp)
  3992.      move.l    _ST_CHK(pc),d0
  3993.      jbne    @f
  3994.      jbsr    _StpDsk        *常駐していないなら一度停止
  3995. @@:
  3996.      moveq    #0,d0
  3997.      move.w    _MastVol,d0
  3998.      move.l    d0,-(sp)
  3999.      jbsr    _ChnVol
  4000.      addq.l    #4,sp
  4001.      jbsr    CCL_LSET
  4002.     movem.l    (sp)+,d0-d7/a0-a6
  4003.      move.w    #1,eddip    *バックライト
  4004.     jbra    sw
  4005. 2:
  4006.     clr.w    _MastVol
  4007.     movem.l    d0-d7/a0-a6,-(sp)
  4008.      *jbsr    _DefVol
  4009.      *move.l d0,-(sp)
  4010.      move.l    #255,-(sp)
  4011.      jbsr    _ChnVol
  4012.      addq.l    #4,sp
  4013.      jbsr    CCL_LSET
  4014.     movem.l    (sp)+,d0-d7/a0-a6
  4015.      move.w    #1,eddip    *バックライト
  4016.     jbra    sw
  4017.  
  4018.  
  4019. fswc:**************************************
  4020.     jbsr    _CdcModeOn
  4021.     move.w    #1,swcoo
  4022.     movem.l    d0-d7/a0-a6,-(sp)
  4023.  
  4024.      jbsr    _NoStMDS
  4025.      move.l    #1,-(sp)
  4026.      jbsr    _CdPlay_restart
  4027.      addq.l    #4,sp
  4028.  
  4029.     movem.l    (sp)+,d0-d7/a0-a6
  4030.      move.w    #1,eddip    *バックライト
  4031.     jbra    sw
  4032.  
  4033. xswc:**************************************
  4034.     move.w    #1,swcoo
  4035.     jbsr    AtoI
  4036.     cmpi.w    #128-(36+1+10)+1,d0
  4037.     jbcc    xswc_err
  4038.     move.l    d0,d7    *x
  4039.     move.b    (a2)+,d0
  4040.     jbeq    xswc_err
  4041.     cmpi.b    #',',d0
  4042.     jbne    xswc_err
  4043.     jbsr    AtoI
  4044.     cmpi.w    #63+1,d0
  4045.     jbcc    xswc_err
  4046.     mulu    #$800,d0
  4047.     add.l    d0,d7
  4048.     addi.l    #$E40000,d7
  4049.  
  4050.     movem.l    d0/d1/a2,-(sp)
  4051.  
  4052.     movea.l    _ST_CHK(pc),a3
  4053.     move.l    a3,d0
  4054.     jbeq    xswcL
  4055.     move.l    d7,_DRAWADDS-_SS_(a3)
  4056.     jbsr    FnkBerChk
  4057.     jbeq    @f
  4058.     jbsr    KillLeds
  4059. @@:
  4060.  
  4061. xswcL:    movem.l    (sp)+,d0/d1/a2
  4062.  
  4063.     move.l    d7,_DRAWADDS
  4064.      move.w    #1,eddip    *バックライト
  4065.     jbra    sw
  4066.  
  4067. xswc_err:
  4068.     move.l    #'X',d0
  4069.     jbra    エラー
  4070.  
  4071. wswc:**************************************
  4072.     move.w    swii(pc),d0
  4073.     jbne    @f
  4074.     move.l    _ST_CHK(pc),d0
  4075.     jbeq    @f
  4076.     Print    LRERSW(pc)
  4077.     jbra    PEE
  4078. @@:
  4079.     move.w    #1,swcoo
  4080.     jbsr    AtoI
  4081.     cmpi.l    #100,d0
  4082.     jbcs    wswc_err
  4083.     cmpi.l    #1024+1,d0
  4084.     jbcc    wswc_err
  4085.     move.l    d0,_CdcTrak
  4086.     bsr    _CalcListWorks
  4087.     bra    sw
  4088.  
  4089. wswc_err:
  4090.     move.l    #'W',d0
  4091.     jbra    エラー
  4092.  
  4093.  
  4094. _CalcListWorks:
  4095.     *-------------------
  4096.     * in d0 = /w[n]
  4097.     *-------------------
  4098.     movem.l    d0/d7/a0,-(sp)
  4099.     lea    _ListName,a0
  4100.     add.l    d0,d0
  4101.     add.l    d0,d0
  4102.     move.l    d0,d7
  4103.     mulu.w    #10,d7
  4104.     adda.l    d7,a0
  4105.     move.l    a0,_pListLong
  4106.     adda.l    d0,a0
  4107.     move.l    a0,_pListStTm
  4108.     adda.l    d0,a0
  4109.     move.l    a0,EndSt
  4110.     move.l    a0,d0
  4111.     sub.l    #__COM__,d0
  4112.     subq.l    #1,d0
  4113.     move.l    d0,KeepLong
  4114.     movem.l    (sp)+,d0/d7/a0
  4115.     rts
  4116.  
  4117.  
  4118. .if 0
  4119. _pListName:    .dc.l    _ListName    *メモリ    40文字まで
  4120. _pListLong:    .dc.l    _ListLong    *ながさ時間    最上位ビットが立って入れば 拡張曲名あり
  4121. _pListStTm:    .dc.l    _ListStTm    *スタート時間    最上位ビットが立って入れば データトラック
  4122.  
  4123. _CdcTrak:    .dc.l    TrkMax    *CDCの最大記憶数
  4124. ES:****↑↑絶対常駐部
  4125. _ListName:    .dcb.b    40*TrkMax,0    *メモリ    40文字まで
  4126. _ListLong:    .dcb.l    TrkMax,0    *ながさ時間    最上位ビットが立って入れば 拡張曲名あり
  4127. _ListStTm:    .dcb.l    TrkMax,0    *スタート時間    最上位ビットが立って入れば データトラック
  4128. .endif
  4129.  
  4130. zswc:**************************************
  4131.     move.w    swii(pc),d0
  4132.     jbne    @f
  4133.     move.l    _ST_CHK(pc),d0
  4134.     jbeq    @f
  4135.     Print    LRERSW(pc)
  4136.     jbra    PEE
  4137. @@:
  4138.     move.b    (a2),d0
  4139.     jbeq    zswc_L1
  4140.     cmpi.b    #' ',d0
  4141.     jbeq    zswc_L1
  4142.     move.b    1(a2),d7
  4143.     cmpi.b    #':',d7
  4144.     jbne    zswc_err
  4145.     ori.b    #$20,d0    *小文字化!
  4146.     subi.b    #'a',d0
  4147.     jbcs    zswc_err
  4148.     cmpi.b    #26,d0
  4149.     jbcc    zswc_err
  4150.     addq.l    #2,a2
  4151.     andi.l    #$00FF,d0
  4152.     addq.l    #1,d0
  4153.     jbra    zswc_L2
  4154. zswc_L1:
  4155.     moveq    #0,d0
  4156. zswc_L2:
  4157.     movem.l    d1-d2/a0-a2,-(sp)
  4158.     move.l    d0,-(sp)
  4159.     jbsr    _Chk_Cdd
  4160.     addq.l    #4,sp
  4161.     movem.l    (sp)+,d1-d2/a0-a2
  4162.     tst.l    d0
  4163.     jbne    PEE
  4164.      move.w    #1,eddip    *バックライト
  4165.     jbra    sw
  4166.  
  4167. zswc_err:
  4168.     move.l    #'Z',d0
  4169.     jbra    エラー
  4170.  
  4171. oswc:**************************************
  4172.     move.w    #1,swcoo
  4173.     move.b    (a2)+,d0
  4174.     jbeq    @f
  4175.     ori.b    #$20,d0    *小文字化!
  4176.     cmpi.b    #'n',d0
  4177.     jbeq    os_on
  4178.     cmpi.b    #'f',d0
  4179.     jbeq    os_off
  4180. @@:    move.l    #'O',d0
  4181.     jbra    エラー
  4182.  
  4183. os_off:
  4184.     move.b    (a2),d0        *'f'の字をスキップ
  4185.     ori.b    #$20,d0    *小文字化!
  4186.     cmpi.b    #'f',d0
  4187.     jbne    @f
  4188.     addq.l    #1,a2
  4189. @@:
  4190.     movem.l    d1/a2,-(sp)
  4191.     move.l    _ST_CHK(pc),d0
  4192.     jbeq    @f
  4193.     jbsr    FnkBerChk
  4194.     jbeq    @f
  4195.     jbsr    KillLeds
  4196. @@:
  4197.     clr.w    _CdcMode            *0:停止
  4198.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  4199.     clr.b    _CHARBUF            *LED文字
  4200.     movem.l    (sp)+,d1/a2
  4201.      move.w    #1,eddip    *バックライト
  4202.     jbra    sw
  4203.  
  4204. os_on:
  4205.     tst.w    _CdcMode            *1:運転中
  4206.     bne    1f
  4207.     move.w    #-1,_CdcMode            *1:運転中
  4208.     clr.w    _CDIN                *0:CDは入っていない 1:入っている
  4209.     tst.w    _JukeBox            *0:ノーマル 1:JukeBox
  4210.     beq    @f
  4211.     move.w    #1,_CDIN
  4212. @@:
  4213. 1:    move.w    #1,_KeySwi
  4214.      move.w    #1,eddip    *バックライト
  4215.     jbra    sw
  4216. sswc:***************************************
  4217.     *CDのストップ   -s
  4218.     jbsr    _CdcModeOn
  4219. *    tst.l    _ST_CHK
  4220. *    beq    @f
  4221. *    jbsr    _ChkCdRom
  4222. *@@:
  4223.     move.w    #1,swcoo
  4224.     movem.l    d0-d7/a0-a6,-(sp)
  4225.     jbsr    _cd_play_pause
  4226.     move.w    #-1,_PauseMode            *0:特に 1:ポーズ中
  4227.     movem.l    d0-d7/a0-a6,-(sp)
  4228.      move.w    #1,eddip    *バックライト
  4229.     jbra    sw
  4230. cswc:**************************************
  4231.     *CDのリスタート -c
  4232.     jbsr    _CdcModeOn
  4233. *    tst.l    _ST_CHK
  4234. *    beq    @f
  4235. *    jbsr    _ChkCdRom
  4236. *@@:
  4237.     move.w    #1,swcoo
  4238.     movem.l    d0-d7/a0-a6,-(sp)
  4239.     jbsr    _cd_play_re
  4240.     clr.w    _PauseMode            *0:特に 1:ポーズ中
  4241.     movem.l    d0-d7/a0-a6,-(sp)
  4242.      move.w    #1,eddip    *バックライト
  4243.     jbra    sw
  4244. AllPlay:**************************************
  4245.     move.w    #1,swcoo
  4246.     move.b    (a2)+,d0
  4247.     ori.b    #$20,d0    *小文字化!
  4248.     cmpi.b    #'l',d0
  4249.     jbne    エラー0
  4250.     move.b    (a2)+,d0
  4251.     ori.b    #$20,d0    *小文字化!
  4252.     cmpi.b    #'l',d0
  4253.     jbne    エラー0
  4254.     move.b    (a2),d0
  4255.     jbeq    @f
  4256.     cmpi.b    #$20,d0
  4257.     jbeq    @f
  4258.     jbne    エラー0
  4259. @@:
  4260.     movem.l    d1/a2/a3,-(sp)
  4261.     move.l    #-1,-(sp)
  4262.     move.l    #-1,-(sp)
  4263.     jbra    PlE
  4264.  
  4265. OwnPlay:**************************************
  4266.     move.w    #1,swcoo
  4267.     subq.l    #1,a2
  4268.     jbsr    AtoMSF
  4269.     tst.l    d0
  4270.     jbpl    Plcln
  4271.     jbsr    AtoI
  4272.     move.l    d0,d7
  4273.     jbeq    エラー0
  4274.     move.b    (a2),d0
  4275.     jbeq    Pl1
  4276.     cmpi.b    #' ',d0
  4277.     jbeq    Pl1
  4278.     cmpi.b    #'-',d0
  4279.     jbeq    Plmi
  4280.     cmpi.b    #'/',d0
  4281.     jbeq    Plwaru
  4282.     jbra    エラー0
  4283.  
  4284. Plwaru:        * t/m:s:f
  4285.     addq.l    #1,a2    * [/] skip
  4286.     move.l    d7,buf2
  4287.     move.l    a0,-(sp)
  4288.      add.w    d7,d7
  4289.      add.w    d7,d7
  4290.      movea.l _pListStTm,a0
  4291.      move.l    (a0,d7.w),buf3
  4292.     movea.l    (sp)+,a0
  4293.     jbsr    AtoMSF
  4294.     tst.l    d0
  4295.     jbmi    エラー0
  4296.     movem.l    d1-d2/a0-a2,-(sp)
  4297.      move.l    buf3(pc),-(sp)
  4298.      move.l    d0,-(sp)
  4299.      jbsr    _addtime
  4300.      addq.l    #8,sp
  4301.     movem.l    (sp)+,d1-d2/a0-a2
  4302.     *addi.l    #$01000000,d0
  4303.     move.l    d0,buf        *開始アドレス
  4304.  
  4305.     move.b    (a2),d0
  4306.     jbeq    Plwaru2
  4307.     cmpi.b    #' ',d0
  4308.     jbeq    Plwaru2
  4309.     cmpi.b    #'-',d0
  4310.     jbne    エラー0
  4311.     addq.l    #1,a2    * [-] skip
  4312.     move.b    (a2),d0
  4313.     jbeq    Plwaru1
  4314.     cmpi.b    #' ',d0
  4315.     jbeq    Plwaru1
  4316.     jbsr    AtoMSF
  4317.     tst.l    d0
  4318.     jbmi    エラー0
  4319.         * t/m:s:f - m:s:f
  4320.     movem.l    d1-d2/a0-a2,-(sp)
  4321.      move.l    buf3(pc),-(sp)
  4322.      move.l    d0,-(sp)
  4323.      jbsr    _addtime
  4324.      addq.l    #8,sp
  4325.     movem.l    (sp)+,d1-d2/a0-a2
  4326.     *addi.l    #$01000000,d0
  4327.     movem.l    d1/a2/a3,-(sp)
  4328.     move.l    d0,-(sp)
  4329.     move.l    buf(pc),-(sp)
  4330.     jbra    PlE
  4331. Plwaru1:    * t/m:s:f -
  4332.     movem.l    d1/a2/a3,-(sp)
  4333.     move.l    #-1,-(sp)
  4334.     move.l    buf(pc),-(sp)
  4335.     jbra    PlE
  4336. Plwaru2:    * t/m:s:f 
  4337.     movem.l    d1/a2/a3,-(sp)
  4338.     move.l    buf2(pc),-(sp)
  4339.     move.l    buf(pc),-(sp)
  4340.     jbra    PlE
  4341.  
  4342.  
  4343. Plcln:        * m:s:f [-[ m:s:f ]]
  4344.     *addi.l    #$01000000,d0
  4345.     move.l    d0,buf
  4346.     move.b    (a2),d0
  4347.     jbeq    Plcln1
  4348.     cmpi.b    #' ',d0
  4349.     jbeq    Plcln1
  4350.     cmpi.b    #'-',d0
  4351.     jbne    エラー0
  4352.     addq.l    #1,a2    * [-] skip
  4353.     jbsr    AtoMSF
  4354.     tst.l    d0
  4355.     jbpl    @f
  4356.     move.b    (a2),d0
  4357.     jbeq    Plcln1
  4358.     cmpi.b    #' ',d0
  4359.     jbeq    Plcln1
  4360.     jbra    エラー0
  4361. @@:        * m:s:f - m:s:f
  4362.     *addi.l    #$01000000,d0
  4363.     movem.l    d1/a2/a3,-(sp)
  4364.     move.l    d0,-(sp)
  4365.     move.l    buf(pc),-(sp)
  4366.     jbra    PlE
  4367. Plcln1:        * m:s:f [-]
  4368.     movem.l    d1/a2/a3,-(sp)
  4369.     move.l    #-1,-(sp)
  4370.     move.l    buf(pc),-(sp)
  4371.     jbra    PlE
  4372.  
  4373. Pl1:        *--------- n
  4374.     movem.l    d1/a2/a3,-(sp)
  4375.     move.l    #0,-(sp)
  4376.     move.l    d7,-(sp)
  4377.     jbra    PlE
  4378. Plmi:        *---------- n-n
  4379.     addq.l    #1,a2    * [-] skip
  4380.     jbsr    AtoI2
  4381.     cmpi.l    #-1,d0
  4382.     jbeq    Pl2
  4383.     jbmi    エラー0
  4384.     movem.l    d1/a2/a3,-(sp)
  4385.     move.l    d0,-(sp)
  4386.     move.l    d7,-(sp)
  4387.     jbra    PlE
  4388. Pl2:        *---------  n-
  4389.     movem.l    d1/a2/a3,-(sp)
  4390.     move.l    #-1,-(sp)
  4391.     move.l    d7,-(sp)
  4392.     *bra    PlE
  4393.  
  4394. PlE:
  4395.     jbsr    _cd_play
  4396.     addq.l    #8,sp
  4397.  
  4398.     movem.l    d0/d2/a0/a1,-(sp)
  4399.     jbsr    _MemChkT
  4400.     movem.l    (sp)+,d0/d2/a0/a1
  4401.  
  4402.     movem.l    (sp)+,d1/a2/a3
  4403.      clr.w    _PauseMode            *0:特に 1:ポーズ中
  4404.      move.w    #1,eddip    *バックライト
  4405.     jbra    sw
  4406.  
  4407. buf:    .dc.l    0
  4408. buf2:    .dc.l    0
  4409. buf3:    .dc.l    0
  4410.  
  4411. AtoMSF:    *-----------------
  4412.     * m:s:f
  4413.     move.l    a2,-(sp)
  4414.     jbsr    AtoI2    *m
  4415.     move.l    d0,d7
  4416.     jbmi    AtoMSF_E
  4417.     move.b    (a2),d0
  4418.     cmpi.b    #':',d0
  4419.     jbeq    @f
  4420.     cmpi.b    #'"',d0
  4421.     jbeq    @f
  4422.     cmpi.b    #$2C,d0        * [']
  4423.     jbne    AtoMSF_E
  4424. @@:    addq.l    #1,a2    * [:] skip
  4425.     swap    d7
  4426.     jbsr    AtoI2    *s
  4427.     tst.l    d0
  4428.     jbmi    AtoMSF_E
  4429.     lsl.l    #8,d0
  4430.     or.l    d0,d7
  4431.     move.b    (a2),d0
  4432.     cmpi.b    #':',d0
  4433.     jbeq    @f
  4434.     cmpi.b    #'"',d0
  4435.     jbeq    @f
  4436.     cmpi.b    #$2C,d0        * [']
  4437.     jbne    AtoMSF_E
  4438. @@:    addq.l    #1,a2    * [:] skip
  4439.     jbsr    AtoI2    *f
  4440.     tst.l    d0
  4441.     jbmi    AtoMSF_E
  4442.     or.l    d7,d0
  4443.     addq.l    #4,sp
  4444.     rts
  4445. AtoMSF_E:
  4446.     movea.l    (sp)+,a2
  4447.     moveq    #-1,d0
  4448.     rts
  4449.  
  4450. help:**************************************
  4451.     *ヘルプ表示
  4452.     Print    LRH(pc)
  4453. .if 0
  4454.     clr.w    -(sp)
  4455.     DOS    _GETFCB
  4456.     addq.l    #2,sp
  4457.     movea.l    d0,a1
  4458.     cmpi.l    #$434F4E20,$0024(a1)    ;'CON '
  4459.     bne    1f
  4460.     Print    LRH_(pc)
  4461.     DOS    _INKEY
  4462.     Print    CR(pc)
  4463. .endif
  4464. 1:    Print    LRH1(pc)
  4465.     clr.w    eddip                *常駐エリアにデータを戻すか
  4466.     jbra    PEE                *end
  4467. CD_ERY:**************************************
  4468.     *CDのリスト  -d
  4469.     move.b    swcom+1(pc),d1
  4470.     jbeq    dswc_chks
  4471.     cmpi.b    #' ',d1
  4472.     jbeq    dswc_chks
  4473.     cmpi.b    #'2',d1
  4474.     jbeq    dswc_chks
  4475.     ori.b    #$20,d1    *小文字化!
  4476.     cmpi.b    #'b',d1
  4477.     jbeq    1f
  4478.     jbra    エラー0
  4479. 1:        ************デバグモード
  4480.      clr.w    eddip    *バックライト
  4481.     move.l    _ST_CHK(pc),d0
  4482.     jbne    @f
  4483.     pea    LR8(pc)        **非常駐エラー
  4484.     jbra    PE
  4485. @@:
  4486.     movea.l    SPP,a1
  4487.     SUPER
  4488.     jbsr    _debug_mode
  4489.     jbra    PEE
  4490.  
  4491. dswc_chks:    ************
  4492.     jbsr    _CdListRead_C            *チェック
  4493.     tst.l    _CdListS            *CDLISTにあるなら 1 
  4494.     jbeq    @f
  4495.     jbsr    _CdTotalEnvSet            *環境変数セット
  4496.     Print    LRNOFL(pc)
  4497.     jbra    PEE
  4498. @@:
  4499.     ** 環境変数 CDCLIST チェック **
  4500.     pea    CDCLIST_FILENAME
  4501.     clr.l    -(sp)
  4502.     pea    CDCLIST_NAME
  4503.     DOS    _GETENV
  4504.     lea    12(sp),sp
  4505.     tst.l    d0
  4506.     jbmi    dswc_ERR1
  4507.  
  4508.     move.w    #1,-(sp)
  4509.     pea    CDCLIST_FILENAME
  4510.     DOS    _OPEN
  4511.     addq.l    #6,sp
  4512.     move.w    d0,Hendl
  4513.     tst.l    d0
  4514.     jbmi    dswc_NEW
  4515.  
  4516.     jbsr    _FgetsInit
  4517.     move.w    #2,-(sp)
  4518.     move.l    #-1,-(sp)
  4519.     move.w    Hendl,-(sp)
  4520.     DOS    _SEEK
  4521.     addq.l    #8,sp
  4522.     jbra    CD_LW
  4523.  
  4524. dswc_NEW:
  4525.     move.w    #%0100000,-(sp)
  4526.     pea    CDCLIST_FILENAME
  4527.     DOS    _CREATE
  4528.     addq.l    #6,sp
  4529.     move.w    d0,Hendl
  4530.     tst.l    d0
  4531.     jbmi    dswc_ERR2    *エラー
  4532. CD_LW:
  4533.     movea.l    _ST_CHK(pc),a3
  4534.     move.l    a3,d0
  4535.     jbeq    @f
  4536.     move.w    _CdcMode-_SS_(a3),B_CdcMode
  4537.     move.w    _KeySwi-_SS_(a3),B_KeySwi
  4538.     clr.w    _CdcMode-_SS_(a3)
  4539.     clr.w    _KeySwi-_SS_(a3)
  4540. @@:
  4541.      moveq    #0,d0
  4542.      move.b    swcom+1(pc),d1
  4543.      cmpi.b    #'2',d1
  4544.      bne    @f
  4545.      moveq    #1,d0
  4546. @@:     move.l    d0,-(sp)
  4547.      moveq    #0,d0
  4548.      move.w    Hendl,d0
  4549.      move.l    d0,-(sp)
  4550.      bsr    _cd_play_entry
  4551.      addq.l    #8,sp
  4552.      move.w    Hendl,-(sp)
  4553.      DOS    _CLOSE
  4554.      addq.l    #2,sp
  4555.     movea.l    _ST_CHK(pc),a3
  4556.     move.l    a3,d0
  4557.     jbeq    @f
  4558.     move.w    B_CdcMode(pc),_CdcMode-_SS_(a3)    *戻す
  4559.     move.w    B_KeySwi(pc),_KeySwi-_SS_(a3)
  4560. @@:
  4561.     jbsr    _CdTotalEnvSet            *環境変数セット
  4562.     jbra    PEE
  4563.  
  4564. dswc_ERR1:
  4565.     clr.b    CDCLIST_FILENAME        *リストファイル無し
  4566.     Print    LRLIEV(pc)
  4567.     jbsr    _CdTotalEnvSet            *環境変数セット
  4568.     jbra    PEE
  4569. dswc_ERR2:
  4570.     clr.b    CDCLIST_FILENAME        *リストファイル無し
  4571.     Print    LRLIER(pc)
  4572.     jbsr    _CdTotalEnvSet            *環境変数セット
  4573.     jbra    PEE
  4574.  
  4575. B_CdcMode: .dc.w 0
  4576. B_KeySwi:  .dc.w 0
  4577.  
  4578.  
  4579. List:**************************************
  4580.     *CDのリスト  -l
  4581.     move.b    swcom+1(pc),d1
  4582.     jbeq    @f
  4583.     cmpi.b    #'0',d1
  4584.     jbeq    @f
  4585.     cmpi.b    #'1',d1
  4586.     jbeq    List_L1
  4587.     cmpi.b    #'2',d1
  4588.     jbeq    List_L2
  4589.     ori.b    #$20,d1    *小文字化!
  4590.     cmpi.b    #'l',d1
  4591.     jbeq    List_LL
  4592.     cmpi.b    #' ',d1
  4593.     jbne    エラー0
  4594. @@:
  4595.     jbsr    _CdListRead_C    *チェック
  4596.     move.l    #0,-(sp)
  4597.     jbra    List_NOMEE
  4598. List_L1:
  4599.     jbsr    _CdListRead_C    *チェック
  4600.     move.l    #1,-(sp)
  4601.     jbra    List_NOMEE
  4602. List_L2:
  4603.     jbsr    _CdListRead_C    *チェック
  4604.     move.l    #2,-(sp)
  4605. List_NOMEE:
  4606.     jbsr    _cd_play_list
  4607.     addq.l    #4,sp
  4608.     clr.w    eddip    *バックライトなし
  4609.     jbra    PEE
  4610.  
  4611. List_LL:    **多連装全CDタイトル表示
  4612.     movea.l    _ST_CHK(pc),a3
  4613.     move.l    a3,d0
  4614.     beq    @f
  4615.     tst.w    _TestunitSw        *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
  4616.     bpl    @f
  4617.     ** CDC 常駐していて、-1 だ
  4618.     move.w    #1,SCF-_SS_(a3)
  4619.     jbsr    _cd_play_listl
  4620.     clr.w    SCF-_SS_(a3)
  4621.     clr.w    eddip    *バックライトなし
  4622.     jbra    PEE
  4623. @@:
  4624.     jbsr    _cd_play_listl
  4625.     clr.w    eddip    *バックライトなし
  4626.     jbra    PEE
  4627.  
  4628.  
  4629.  
  4630. m2swc:**************************************
  4631.     *CDのリスト  -m
  4632.     jbsr    _cd_mem_list
  4633.     jbra    PEE
  4634. keep:    ************************** 常駐させる
  4635.     movem.l    d0-d7/a0-a6,-(sp)
  4636.     jbsr    _CDROM_chk
  4637.     tst.l    d0
  4638.     jbeq    keepL4
  4639.     cmpi.l    #-3,d0
  4640.     jbne    @f
  4641.         **動作不可能 (err = -3)
  4642.     movem.l    (sp)+,d0-d7/a0-a6
  4643.     jbsr    _PrintScsiId    *SCSI-ID表示
  4644.     pea    LRNOID(pc)
  4645.      clr.w    eddip    *常駐エリアにデータを戻すか
  4646.     jbra    PE    *end
  4647. @@:
  4648.     cmpi.l    #-1,d0
  4649.     jbne    @f
  4650.         **CD-ROMじゃ無い (err = -1)
  4651.     movem.l    (sp)+,d0-d7/a0-a6
  4652.     jbsr    _PrintScsiId    *SCSI-ID表示
  4653.     pea    LRNOID(pc)
  4654.      clr.w    eddip    *常駐エリアにデータを戻すか
  4655.     jbra    PE    *end
  4656. @@:        **準備されていないだけ (err = -2)
  4657.     jbra    keepLL
  4658.  
  4659. keepL4:
  4660.     Print    LRLTRD(pc)
  4661.     *jbsr    _CdListRead_C
  4662.     jbsr    _CdListRead
  4663.     jbpl    @f
  4664.     cmpi.l    #-100,d0
  4665.     jbne    keepLL
  4666.     Print    LRNOCD(pc)
  4667.     jbra    keepLL
  4668. @@:
  4669.     *Print    _CdName
  4670.      move.l    #_CdName,-(sp)
  4671.      jbsr    _NameCenter
  4672.      addq.l    #4,sp
  4673.      move.l    d0,-(sp)
  4674.      DOS    _PRINT
  4675.      addq.l    #4,sp
  4676.     Print    LRLTOK(pc)
  4677.     jbsr    _CdTotalEnvSet        *環境変数セット
  4678.  
  4679. keepLL:    movem.l    (sp)+,d0-d7/a0-a6
  4680.  
  4681.     tst.w    swii                * 1;[@]がある?
  4682.     jbeq    @f
  4683.     Print    LRIIK(pc)
  4684. @@:
  4685.     tst.w    _SWPD                * /pdがある?
  4686.     jbeq    @f
  4687.     Print    LRPDDV(pc)
  4688. @@:
  4689.     tst.w    _ExTrak                * 1;拡張トラックあり
  4690.     jbeq    @f
  4691.     Print    LREXTK(pc)
  4692. @@:
  4693.     tst.w    _OvTrak                * 1;トラックオーバー?
  4694.     jbeq    @f
  4695.     Print    LROVTK(pc)
  4696. @@:
  4697.     move.l    _CdcTrak,d0
  4698.     cmpi.l    #DefTrkMax,d0
  4699.     beq    @f
  4700.     move.l    d0,-(sp)
  4701.     pea    LRWTK
  4702.     move.l    #1,-(sp)
  4703.     jbsr    _fprintf_
  4704.     lea    12(sp),sp
  4705. @@:
  4706.     tst.w    _CddevSw            * 1;計測ドライバー使用
  4707.     jbeq    @f
  4708.     Print    LRCDDS(pc)
  4709. @@:
  4710.     movea.l    _ST_CHK(pc),a3
  4711.     move.l    a3,d0
  4712.     jbeq    keepL1
  4713.         *既に常駐、設定変更
  4714.     clr.w    (SUC-_SS_)(a3)     *白帯で1になったまま終わってしまうともう動かないので初期化
  4715.     clr.w    (SCF-_SS_)(a3)     *白帯で1になったまま終わってしまうともう動かないので初期化
  4716.     *clr.w    (MFP_ING-_SS_)(a3) *白帯で1になったまま終わってしまうともう動かないので初期化
  4717.     clr.l    IocsSwc         *白帯で1になったまま終わってしまうともう動かないので初期化
  4718.      move.w    #1,eddip    *バックライト
  4719.     pea    LR5(pc)
  4720.     jbra    PE    *end
  4721.  
  4722. keepL1:    **セット
  4723.         **TRAP 5 チェック**
  4724.     tst.w    swii    * 1;[@]がある?
  4725.     jbne    @f
  4726.     tst.w    swtr    *sw trがある?
  4727.     jbne    @f
  4728.      movea.l TRP5_,a0
  4729.     cmpa.l    #$00FFF000,a0
  4730.     jbcc    @f
  4731.     pea    LRTP5(pc)
  4732.     jbra    PE    *end
  4733. @@:
  4734.  
  4735.  .if 0
  4736.  
  4737.     clr.w    _TrkNo
  4738.     pea    _plyinf(pc)
  4739.     jbsr    _ChkPly
  4740.     addq.l    #4,sp
  4741.     tst.l    d0
  4742.     jbne    keepL3
  4743.     jbsr    _ChkPlyDisp
  4744.  
  4745.     move.l    _plyinf(pc),d0
  4746.     cmpi.b    #$11,d0
  4747.     jbeq    keepL2
  4748.     cmpi.b    #$12,d0
  4749.     jbeq    keepL2
  4750.     clr.w    _TrkNo
  4751.     jbra    keepL3
  4752. keepL2:
  4753.     move.l    _plyinf+4(pc),d0
  4754.     move.w    d0,_TrkNo
  4755.     move.w    d0,_TrkNoS
  4756.     jbsr    _MemChkT
  4757.     jbsr    _SetTrkLong
  4758. keepL3:
  4759.  
  4760.  .else
  4761.  
  4762.     movem.l    d0-d7/a0-a6,-(sp)
  4763.      bsr    StopCd
  4764.     movem.l    (sp)+,d0-d7/a0-a6
  4765.  
  4766.  .endif
  4767.  
  4768.     SCSI    $1E                * TWOSCSI チェック
  4769.     move.w    d0,_TwsFlg            * 
  4770.  
  4771.     move.w    #SF,_STFLAG            *常駐チェック用
  4772.     tst.w    swtr                *sw trがある?
  4773.     jbne    @f
  4774.     ori.w    #SFT5,_STFLAG            *常駐チェック用   SFT5;trap5未使用
  4775.     move.l    TRP5_,TRP5_JPT
  4776.      move.l    #TRP5,TRP5_
  4777. @@:
  4778.     tst.w    swpw                *sw pwがある?
  4779.     jbeq    @f
  4780.     ori.w    #SFPW,_STFLAG            *常駐チェック用   PWSW;リセット時CD停止
  4781.     move.l    PWSW_,PWSW_JPT
  4782.      move.l    #PWSW,PWSW_
  4783. @@:
  4784.     move.l    B_KEYSNS_,B_KEYSNS_JPT
  4785.      move.l    #B_KEYSNS,B_KEYSNS_
  4786.     move.l    BITSNS_,BITSNS_JPT
  4787.      move.l    #BITSNS,BITSNS_
  4788.     move.l    MFP_,MFP_JPT
  4789.     move.l    MFP_,MFP_JPT_
  4790.      move.l    #MFP,MFP_
  4791.  
  4792.     move.l    SCALL_,SCALL_JPT
  4793.      move.l    #SCALL,SCALL_
  4794.  
  4795.     pea    INTVCS
  4796.     move.w    #INTVCS_,-(sp)
  4797.     DOS    _INTVCS
  4798.     addq.l    #6,sp
  4799.     move.l    d0,INTVCS_JPT
  4800.  
  4801.     pea    INTVCG
  4802.     move.w    #INTVCG_,-(sp)
  4803.     DOS    _INTVCS
  4804.     addq.l    #6,sp
  4805.     move.l    d0,INTVCG_JPT
  4806.  
  4807.         ** 16dotfontアドレス奪取
  4808.     moveq    #$20,d1
  4809.     moveq    #8,d2
  4810.     IOCS    _FNTADR
  4811.     subi.l    #$20*16,d0
  4812.     move.l    d0,HanRomAdd
  4813.  
  4814.         ** 乱数乱数
  4815.     IOCS    _TIMEGET
  4816.     add.l    $00ed0040,d0
  4817.     move.l    d0,-(sp)            *乱数初期化に使用
  4818.     jbsr    _Randomize
  4819.     addq.l    #4,sp
  4820.     jbsr    _Rand
  4821.     move.l    d0,-(sp)
  4822.     jbsr    _Randomize
  4823.     addq.l    #4,sp
  4824.  
  4825.     jbsr    _WaitCC    *今の1/100s
  4826.     clr.w    _PlyTD            *すぐに実行されるように
  4827.     jbsr    _ChkCdRom
  4828.     tst.w    _CdcMode            *0:停止中 1:運転中
  4829.     jbeq    @f
  4830.     tst.w    _DisMode            *0;非表示 1;表示 2;Small表示
  4831.     jbeq    @f
  4832.     jbsr    _B_KLE_D
  4833. @@:
  4834.     *------
  4835.     move.l    _SCSI_ID,d4            * ダミーで発行
  4836.     SCSI    _S_TESTUNIT            * CDCLUN に有効
  4837.     *------
  4838.     Print    LRKP(pc)
  4839.     clr.w    -(sp)
  4840.     movea.l    EndSt,a0
  4841.     suba.l    #StartStatio,a0
  4842.     move.l    a0,-(sp)
  4843.     *move.l    #EndStatio-StartStatio,-(sp)
  4844.     DOS    _KEEPPR
  4845.  
  4846. free:    *****************************常駐解除
  4847.     movea.l    _ST_CHK(pc),a3
  4848.     move.l    a3,d0
  4849.     jbne    @f
  4850.     *jbsr    _CdcPlayStopTrap        *違うバージョン対策
  4851.     pea    LR8(pc)                **非常駐
  4852.      clr.w    eddip                *常駐エリアにデータを戻すか
  4853.     jbra    PE    *end
  4854.  
  4855. @@:
  4856.     move.l    VC_CHK(pc),d1
  4857.     cmp.w    _STFLAG,d1
  4858.     jbeq    @f
  4859.     pea    LR4(pc)                **ベクタが占領
  4860.      clr.w    eddip                *常駐エリアにデータを戻すか
  4861.     jbra    PE    *end
  4862. @@:
  4863.         ***解除の前に
  4864.     tst.w    _ScscChksw-_SS_(a3)        *1;STSIN MSGIN の実行待ち
  4865.     beq    @f
  4866.     jbsr    _scsi_cmd_chk_s
  4867. @@:
  4868.         ***解除!!
  4869.     move.w    sr,-(sp)
  4870.     DI
  4871.  
  4872.         tst.b    $0CBC.w            * CPUFLG
  4873.         beq    @f
  4874.         moveq    #3,d1            * キャッシュクリアのつもり
  4875.         moveq    #$AC,d0
  4876.         trap    #15
  4877. @@:
  4878.  
  4879.     move.w    _STFLAG,d0            *常駐チェック用
  4880.     andi.w    #SFT5,d0
  4881.     jbeq    @f
  4882.     move.l    #(TRP5_JPT-_SS_),d0
  4883.     move.l    0(a3,d0.l),TRP5_
  4884. @@:
  4885.     move.w    _STFLAG,d0            *常駐チェック用
  4886.     andi.w    #SFPW,d0
  4887.     jbeq    @f
  4888.     move.l    (PWSW_JPT-_SS_)(a3),PWSW_
  4889. @@:
  4890.     move.l    (B_KEYSNS_JPT-_SS_)(a3),B_KEYSNS_
  4891.     move.l    (BITSNS_JPT-_SS_)(a3),BITSNS_
  4892.     move.l    (MFP_JPT-_SS_)(a3),MFP_
  4893.  
  4894.     move.l    (INTVCS_JPT-_SS_)(a3),-(sp)
  4895.     move.w    #INTVCS_,-(sp)
  4896.     DOS    _INTVCS
  4897.     addq.l    #6,sp
  4898.  
  4899.     move.l    (INTVCG_JPT-_SS_)(a3),-(sp)
  4900.     move.w    #INTVCG_,-(sp)
  4901.     DOS    _INTVCS
  4902.     addq.l    #6,sp
  4903.  
  4904.     move.l    (SCALL_JPT-_SS_)(a3),SCALL_
  4905.  
  4906.         tst.b    $0CBC.w            * CPUFLG
  4907.         beq    @f
  4908.         moveq    #3,d1            * キャッシュクリアのつもり
  4909.         moveq    #$AC,d0
  4910.         trap    #15
  4911. @@:
  4912.  
  4913.     move.w    (sp)+,sr
  4914.  
  4915.     jbsr    FnkBerChk
  4916.     jbeq    @f
  4917.     jbsr    KillLeds
  4918. @@:
  4919.     *lea    SS-_SS_(a3),a3            * _SS_ から SS へ
  4920.     adda.l    #SS-_SS_,a3            * _SS_ から SS へ
  4921.     sub.l    #$00000F0,a3
  4922.     move.l    a3,-(sp)
  4923.     DOS    _MFREE
  4924.     addq.l    #4,sp
  4925.     suba.l    a3,a3
  4926.  
  4927.     pea    LR3(pc)
  4928. PE:    DOS    _PRINT
  4929.     addq.l    #4,sp
  4930.  
  4931. PEE:
  4932.     tst.w    eddip    *バックライト
  4933.     jbeq    @f
  4934.     jbsr    HenSuSet
  4935. @@:
  4936.     DOS    _EXIT
  4937.  
  4938.  
  4939. _CdListSub_C:************************
  4940.     tst.l    _ST_CHK
  4941.     jbne    @f
  4942.     movem.l    d0-d2/a0-a2,-(sp)
  4943.     jbsr    _CdListSub
  4944.     movem.l    (sp)+,d0-d2/a0-a2
  4945. @@:
  4946.     rts
  4947.  
  4948. _CdListRead_C:*************コマンドライン用
  4949.     tst.l    _ST_CHK
  4950.     jbne    @f
  4951.     jbsr    _CdListRead
  4952. @@:
  4953.     rts
  4954.  
  4955.  
  4956.  
  4957.  
  4958. HenSuSet:** 常駐していたらそのデータ流し込む1**
  4959.     move.l    _ST_CHK(pc),d0
  4960.     jbne    @f
  4961.     rts
  4962. @@:
  4963.     movem.l    d0-d2/a0-a3,-(sp)
  4964.     jbsr    _ChkCdRom
  4965.     tst.w    _CdcMode            *0:停止中 1:運転中
  4966.     jbeq    @f
  4967.     jbsr    _B_KLE_D
  4968. @@:
  4969.     movea.l    _ST_CHK(pc),a3
  4970.     lea    __COM__,a0
  4971.     lea    __COM__-_SS_(a3),a1
  4972.     *move.w    #(__COM__S-__COM__)/2-1,d0
  4973.     move.l    KeepLong-_SS_(a3),d0
  4974. @@:    move.b    (a0)+,(a1)+
  4975.     subq.l    #1,d0
  4976.     bcc    @b
  4977.     movem.l    (sp)+,d0-d2/a0-a3
  4978.     rts
  4979.  
  4980. CCL_LSET:*************LUN,VOL関係キーセット
  4981.     move.w    _LUN_MAX,d0
  4982.     add.w    d0,d0
  4983.     lea    CC_LUN0(pc),a0
  4984.     move.w    (a0,d0.w),d0
  4985.     move.w    d0,CmdC_List+(CCLF-CmdC_List_L2)
  4986.     move.w    d0,CmdC_ListD+(CCLF-CmdC_List_L2)
  4987.  
  4988.     tst.w    _MastVol
  4989.     beq    @f
  4990.         *│  CLR │  ↓  │  →  │  ↑  │  ←  │ UNDO │Rolldn│Rollup
  4991.     ori.b    #%0101_0000,CmdC_List+7
  4992.     ori.b    #%0101_0000,CmdC_ListD+7
  4993.     rts
  4994. @@:
  4995.     andi.b    #%1010_1111,CmdC_List+7
  4996.     andi.b    #%1010_1111,CmdC_ListD+7
  4997.     rts
  4998.  
  4999.  
  5000. _MatherEnvSet:*************親環境変数設定
  5001.     link    a6,#0
  5002.     movea.l    MEMP(pc),a2
  5003. 1:
  5004.     lea.l    $0010(a2),a1
  5005.     IOCS    _B_LPEEK        *プロセスの環境アドレス
  5006.     andi.l    #$00ffffff,d0
  5007.     beq    @f            *0なら
  5008.     btst.l    #0,d0
  5009.     bne    @f            *奇数なら
  5010.  
  5011.     move.l    12(a6),-(sp)    *内容
  5012.     move.l    d0,-(sp)    *ENV
  5013.     move.l    8(a6),-(sp)    *環境変数
  5014.     DOS    _SETENV
  5015.     lea.l    12(sp),sp
  5016. @@:
  5017.     lea.l    4(a2),a1
  5018.     IOCS    _B_LPEEK        *一つ前のメモリ管理ポインタ
  5019.     andi.l    #$00ffffff,d0
  5020.     beq    @f            *0ならおわり
  5021.     btst.l    #0,d0
  5022.     bne    @f            *奇数ならおわり
  5023.     movea.l    d0,a2        *ポインタを変更
  5024.     bra    1b
  5025.  
  5026. @@:
  5027.     unlk    a6
  5028.     rts
  5029.  
  5030.  
  5031. StopCd:    ********************************************
  5032.     *    演奏を停止させる
  5033.     *        常駐時用
  5034.     tst.w    _LUN_MAX
  5035.     bne    1f
  5036.     jbsr    _ZeroUnit
  5037.     rts
  5038. 1:
  5039.     move.w    _SCSI_LUN__,-(sp)
  5040.     move.w    _LUN_MAX,d7
  5041.     subq.w    #1,d7
  5042. @@:    move.l    d7,d0
  5043.     jbsr    _SetLUN
  5044.     jbsr    _ZeroUnit
  5045.     dbra    d7,@b
  5046.     move.w    (sp)+,_SCSI_LUN__
  5047.     moveq    #0,d0
  5048.     move.w    _SCSI_LUN__,d0
  5049.     jbsr    _SetLUN
  5050.     rts
  5051.  
  5052.  
  5053.     *****************************************************************
  5054.  
  5055.  
  5056. CmdC_List_L1:        *ノーマル用
  5057.     defccl
  5058. CmdC_List_L2:        *CR対応用
  5059.     .dc.b    %0000_0010 **│  6&  │  5%  │  4$  │  3#  │  2"  │  1!  │  ESC │未定義
  5060.     .dc.b    %1000_0000 **│  BS  │  \|  │  ^~  │  -=  │  0   │  9)  │  8(  │  7'  
  5061.     .dc.b    %0001_1101 **│  U  │  Y  │  T  │  R  │  E  │  W  │  Q  │  TAB 
  5062.     .dc.b    %1111_0000 **│  S  │  A  │ [CR] │  [   │  @`  │  P  │  O  │  I  
  5063.     .dc.b    %0000_0000 **│  ;+  │  L  │  K  │  J  │  H  │  G  │  F  │  D  
  5064.     .dc.b    %0000_0110 **│  N  │  B  │  V  │  C  │  X  │  Z  │   ]  │  :*  
  5065.     .dc.b    %1100_0000 **│  DEL │ HOME │ [SP] │   _  │  /?  │  .>  │  ,<  │  M  
  5066.     .dc.b    %1010_1111 **│  CLR │  ↓  │  →  │  ↑  │  ←  │ UNDO │Rolldn│Rollup
  5067.     .dc.b    %1111_1111 **│  4  │  +  │  9  │  8  │  7  │  -  │  *  │  /  
  5068.     .dc.b    %1111_1111 **│  0  │ ENTER│  3  │  2  │  1  │  =  │  6  │  5  
  5069.     .dc.b    %0000_1011 **│  XF3 │  XF2 │  XF1 │ HELP │ 登録 │ 記号 │  .  │  ,  
  5070.     .dc.b    %0000_0000 **│ ヒカナ │  INS │ CAPS │コード│ ローマ字│ かな │  XF5 │  XF4 
  5071. CCLF:    .dc.b    %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5072.     .dc.b    %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5073.     .dc.b    %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
  5074.     .dc.b    %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
  5075. CmdC_List_L3:        *compact用
  5076.     .dc.b    %0000_0010 **│  6&  │  5%  │  4$  │  3#  │  2"  │  1!  │  ESC │未定義
  5077.     .dc.b    %1001_1111 **│  BS  │  \|  │  ^~  │  -=  │  0   │  9)  │  8(  │  7'  
  5078.     .dc.b    %1001_1101 **│  U  │  Y  │  T  │  R  │  E  │  W  │  Q  │  TAB 
  5079.     .dc.b    %1111_0111 **│  S  │  A  │ [CR] │  [   │  @`  │  P  │  O  │  I  
  5080.     .dc.b    %1111_0000 **│  ;+  │  L  │  K  │  J  │  H  │  G  │  F  │  D  
  5081.     .dc.b    %0000_0110 **│  N  │  B  │  V  │  C  │  X  │  Z  │   ]  │  :*  
  5082.     .dc.b    %1101_1111 **│  DEL │ HOME │ [SP] │   _  │  /?  │  .>  │  ,<  │  M  
  5083.     .dc.b    %1010_1111 **│  CLR │  ↓  │  →  │  ↑  │  ←  │ UNDO │Rolldn│Rollup
  5084.     .dc.b    %1111_1111 **│  4  │  +  │  9  │  8  │  7  │  -  │  *  │  /  
  5085.     .dc.b    %1111_1111 **│  0  │ ENTER│  3  │  2  │  1  │  =  │  6  │  5  
  5086.     .dc.b    %0000_1011 **│  XF3 │  XF2 │  XF1 │ HELP │ 登録 │ 記号 │  .  │  ,  
  5087.     .dc.b    %0000_0000 **│ ヒカナ │  INS │ CAPS │コード│ ローマ字│ かな │  XF5 │  XF4 
  5088.     .dc.b    %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5089.     .dc.b    %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5090.     .dc.b    %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
  5091.     .dc.b    %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
  5092.  
  5093. CC_LUN0:
  5094.     .dc.b    0
  5095.     .dc.b    0
  5096. CC_LUN1:
  5097.     .dc.b    %0000_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5098.     .dc.b    %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5099. CC_LUN2:
  5100.     .dc.b    %0001_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5101.     .dc.b    %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5102. CC_LUN3:
  5103.     .dc.b    %0011_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5104.     .dc.b    %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5105. CC_LUN4:
  5106.     .dc.b    %0111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5107.     .dc.b    %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5108. CC_LUN5:
  5109.     .dc.b    %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5110.     .dc.b    %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5111. CC_LUN6:
  5112.     .dc.b    %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5113.     .dc.b    %0001_0001 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5114. CC_LUN7:
  5115.     .dc.b    %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5116.     .dc.b    %0001_0011 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5117. CC_LUN8:
  5118.     .dc.b    %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5119.     .dc.b    %0001_0111 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5120. CC_LUN9:
  5121.     .dc.b    %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 
  5122.     .dc.b    %0001_1111 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 
  5123.  
  5124. MEMP:
  5125.     .dc.l    0
  5126. _ST_CHK:
  5127.     .dc.l    0
  5128. VC_CHK:
  5129.     .dc.l    0
  5130. GETBUF:
  5131.     .ds.b    256
  5132.     .even
  5133. CDROM_NAME:
  5134.     .dc.b    'CDROM',0
  5135.     .even
  5136. CDCSW_NAME:
  5137.     .dc.b    'CDCSW',0
  5138.     .even
  5139.  
  5140. LRKP:    .dc.b    ' 常駐しました。          ',$0d,$0a,0
  5141. LRTP5:    .dc.b    ' TRAP #5 が使用されているようです。常駐しません。',$0d,$0a,0
  5142. LR3:    .dc.b    ' 常駐解除しました。      ',$0d,$0a,0
  5143. LR4:    .dc.b    ' ベクタが占領されています。',$0d,$0a,0
  5144. LR5:    .dc.b    ' 設定を変更しました。    ',$0d,$0a,0
  5145. LR6_:    .dc.b    'スイッチが異常です。     ',$0d,$0a,0
  5146. LR6:    .dc.b    ' コマンドラインが異常です。',$0d,$0a,0
  5147. LR7:    .dc.b    ' スイッチが異常です。    ',$0d,$0a,0
  5148. LR8:    .dc.b    ' 常駐していません。      ',$0d,$0a,0
  5149. LRLTRD:    .dc.b    ' タイトルリストファイルとCDのチェック中です。',$0d,$0a,0
  5150. LRLTOK:    .dc.b    ' タイトルリストファイルにありました。',$0d,$0a,0
  5151. LRLTBD:    .dc.b    ' タイトルリストファイルにはありません。',$0d,$0a,0
  5152. LROVTK:    .dc.b    ' 管理トラックが足りませんでした。',$0d,$0a,0
  5153. LRWTK:    .dc.b    ' %4個の管理トラックを確保しています。',$0d,$0a,0
  5154. LRIIK:    .dc.b    ' CDC.x の複数使用します。',$0d,$0a,0
  5155. LRPDDV:    .dc.b    ' PD-DRIVE(LUN有効MODE)対策します。',$0d,$0a,0
  5156. LREXTK:    .dc.b    ' 拡張トラックを使用しています。',$0d,$0a,0
  5157. LRCDDS:    .dc.b    ' 計測技研 CD-ROM DRIVER IOCTRL CALL を使用します。',$0d,$0a,0
  5158. LRNOID:    .dc.b    ' の装置は、CD-ROM ではないようです。',$0d,$0a
  5159.     .dc.b    ' 常駐しません。',$0d,$0a,0
  5160. LRERSW:    .dc.b    ' /Z,/TR,/PW,/W は常駐時のみ有効なコマンドです。',$0d,$0a,0
  5161. LRNOCD:    .dc.b    ' CDが準備されていません。',$0d,$0a,0
  5162. LRLIEV:    .dc.b    ' 環境変数 CDCLIST が定義されていません。',$0d,$0a,0
  5163. LRLIER:    .dc.b    ' 環境変数 CDCLIST の内容が異常です。',$0d,$0a,0
  5164. LRNOLM:    .dc.b    ' /LM が指定されていないので /JB は無効です。',$0d,$0a,0
  5165. LRNOFL:    .dc.b    ' この CD は既に登録されています。',$0d,$0a,0
  5166. LRSCRM:    .dc.b    ' SCSI ROM がありません??',$0d,$0a,0
  5167. LRSCIO:    .dc.b    ' SCSI-IOCS がありません。',$0d,$0a,0
  5168. LRNCDC:    .dc.b    ' CDC.x は常駐していません。',$0d,$0a,0
  5169.  
  5170. LRH:    .dc.b    $0d,$0a
  5171.     .dc.b    '使用法:CDC.x [switch]|[曲番号(時間)[-[曲番号(時間)]]]|[ALL]',$0d,$0a
  5172.     .dc.b    ' 曲番号    : 演奏するCDの曲番号を指定します。',$0d,$0a
  5173.     .dc.b    ' u:v:w-    : u分v秒w~最後まで演奏します。',$0d,$0a
  5174.     .dc.b    ' u:v:w-x:y:z    : u分v秒w~x分y秒zまで演奏します。',$0d,$0a
  5175.     .dc.b    ' ?/u:v:x-    : ? 曲目のu分v秒w~最後まで演奏します。',$0d,$0a
  5176.     .dc.b    ' ?/u:v:w-x:y:z    : ? 曲目のu分v秒w~x分y秒zまで演奏します。',$0d,$0a
  5177.     .dc.b    ' ALL        : 全曲演奏します。',$0d,$0a
  5178.     .dc.b    ' switch    :',$0d,$0a
  5179.     *.dc.b    '    @ ・・・・・・ CDC.x を重複常駐します(必ず頭に付けること)。',$0d,$0a
  5180.     .dc.b    '    無し ・・・ 現在の CD-ROM の状態を表示します。',$0d,$0a
  5181.     .dc.b    '    /I ・・・・・ 常駐します。',$0d,$0a
  5182.     .dc.b    '    /R ・・・・・ 常駐解除します。',$0d,$0a
  5183.     .dc.b    '    /L ・・・・・ CD-ROM の演奏時間を一覧します。',$0d,$0a
  5184.     .dc.b    '    /L2 ・・・・ CD-RO Mの演奏時間を一覧します(拡張曲名,中間曲名対応)。',$0d,$0a
  5185. ***    .dc.b    '    /LL ・・・・ 多連CD-ROMのCDタイトルを一覧します。',$0d,$0a
  5186.     .dc.b    '    /D ・・・・・ CD-ROM をタイトルリストファイルに追加します。',$0d,$0a
  5187.     .dc.b    '    /D2 ・・・・ CD-ROM をタイトルリストファイルに追加します(index対応)。',$0d,$0a
  5188.     .dc.b    '    /M ・・・・・ 現在のプログラム状態を表示します。',$0d,$0a
  5189.      .dc.b    '    /ID[n]・・ CD-ROM の ID を指定します。(def.%CDROM%)',$0d,$0a
  5190.     .dc.b    '    /LUN[n]・ CD-ROM の LUN を指定します。(def.0)',$0d,$0a
  5191.     .dc.b    '    /TY[n]・・ CD-ROM の TRAY を指定します。(def.1)',$0d,$0a
  5192.     .dc.b    '    /LM[n]・・ [n]連 CD-ROM に対応します。(def.0)',$0d,$0a
  5193.     .dc.b    '    /JB ・・・・ JukeBoxモードにします(必ず/LM指定の後で)。',$0d,$0a 
  5194.      .dc.b    '    /PD ・・・・ PD-DRIVE に対応します。',$0d,$0a
  5195.     .dc.b    '    /W[n] ・・ 管理トラック数を設定します(常駐時のみ有効)。(def.200)',$0d,$0a
  5196.      .dc.b    '    /Z ・・・・・ 計測 CDDEV.SYS の IOCTRL を使用します(常駐時のみ有効)。',$0d,$0a
  5197.      .dc.b    '    /TR ・・・・ trap5 を使用しない(常駐時のみ有効)。',$0d,$0a
  5198.     .dc.b    '    /PW ・・・・ 電源 off 時 CD を止める様にします(常駐時のみ有効)。',$0d,$0a
  5199.     .dc.b    0
  5200. LRH1:
  5201.     .dc.b    '    /S,/C ・・ 演奏を一時停止,再開します。',$0d,$0a
  5202.      .dc.b    '    /F ・・・・・ 演奏中、次の曲へスキップさせます。',$0d,$0a
  5203.      .dc.b    '    /VM[n]・・ ボリューム変更を有効にし、マスターボリュームを指定します。(def.0=使用しない)',$0d,$0a
  5204.      .dc.b    '    /V[n] ・・ ボリューム変更をします。(def.51)',$0d,$0a
  5205.     .dc.b    '    /A ・・・・・ オートモードにします。',$0d,$0a
  5206.      .dc.b    '    /A1 ・・・・ ランダムモードにします。',$0d,$0a
  5207.      .dc.b    '    /PT[n]・・ 演奏時間表示モードを設定します。0=ノーマル,1=リバース,2=トータル,3=トータルリバース。(def.0)',$0d,$0a
  5208.     .dc.b    '    /OFF ・・・ CDC.x の機能を停止します。',$0d,$0a
  5209. *    .dc.b    '    /ON ・・・・ CDC.x の機能を再開します。キー入力禁止も解除します。',$0d,$0a
  5210.     .dc.b    '    /LED[n]・ LED の表示の ON/OFF します。 0=OFF,1=ON。(def.1)',$0d,$0a
  5211.      .dc.b    '    /KS ・・・・ CDC.x のキー操作を使えないようにします(解除は/ON)。',$0d,$0a
  5212.     .dc.b    '    /T[m][,[n][,[o]]] ・・',$0d,$0a
  5213.     .dc.b    '         CDC.x の割り込みタイミングを 1/100s単位で設定します。(def.m=100,n=100,o=100)',$0d,$0a
  5214.     .dc.b    '    /X[x],[y]・ CDC.x の LED 部の表示位置を設定します。(def.x=49,y=29)',$0d,$0a
  5215.     .dc.b    '    /K[n] ・・ CDC.x 機能のシフトキー設定。(def.8 = [XF4])[XF1]=1 : [XF1]=2 : [XF3]=4',$0d,$0a
  5216.     .dc.b    '          [XF4]=8 : [XF5]=16 : [SHIFT]=32 : [CTRL]=64 : [OPT1]=128 : [OPT2]=256',$0d,$0a
  5217.     .dc.b    '    /KC[m],[n]・ キーを入れ換えます。キースキャンコードで指定します。',$0d,$0a
  5218.     .dc.b    '    /KN[m]・・ 特定のキーを使用しないようにします。/KC[m,n]の影響を受けません。',$0d,$0a
  5219.     .dc.b    '    /B[n]・・・ n=2 で compactキーボードモードにします。(def.0)',$0d,$0a
  5220.     *.dc.b    '                /KNの変更を元に戻します。',$0d,$0a
  5221.     *.dc.b    '    /MU ・・・・ MUTERM モード。強引にキーベクタを奪取します。',$0d,$0a
  5222.      .dc.b    '    /U ・・・・・ 演奏中、CD 未挿入にします。',$0d,$0a
  5223.      .dc.b    '    /U1 ・・・・ CD-ROM 挿入状態はデバイス通りにします。',$0d,$0a
  5224.      .dc.b    '    /UA ・・・・ AUDIO-ONLY の CD の場合未挿入状態にします。',$0d,$0a
  5225.     .dc.b    '    /PM ・・・・ 演奏時の固まりを回避する。',$0d,$0a
  5226.     .dc.b    '    /PM1 ・・・ /PM を無効にする(def.)。',$0d,$0a
  5227.     .dc.b    '    /PS ・・・ 演奏時間計算に X68 内タイマーを使用します。',$0d,$0a
  5228.     **.dc.b    '    /PS1 ・・・ /PS を取り消します。',$0d,$0a
  5229. ****    .dc.b    '    /DI ・・・・ SCSI-CMD 中割り込みを止めません(def.)。',$0d,$0a
  5230. ****    .dc.b    '    /DI1 ・・・ SCSI-CMD 中割り込みを止めます。',$0d,$0a
  5231.      .dc.b    '    /II ・・・・ インフォメーション。',$0d,$0a
  5232. ****     .dc.b    '    /DB ・・・・ デバッグモード。CD-DA チェッカー。',$0d,$0a
  5233.     .dc.b    '    /E ・・・・・ 環境変数 CDCSW を参照します(以下のスイッチは無視されます)。',$0d,$0a
  5234. CR:    .dc.b    $0d,$0a,0
  5235.     .even
  5236. LRH_:    .dc.b    '-more-',0
  5237. LR1:    .dc.b    'X68k AUDIO-CD CONTROLER Version 1.10H Copyright 1994-97 TNB製作所',$0d,$0a
  5238.     .dc.b    0
  5239.     .even
  5240.  
  5241.